您的位置:首页 > 编程语言 > Go语言

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常用符号:



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:\\

执行通过:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: