文件上传一句话木马getshell

文件上传

文件上传流程:

a.文件表单提交

b.生成临时文件(读取临时文件信息)

c.后端语言判断该文件是否合规

d.合规则保存文件

一句话木马:

1.在phpstudy搭建的站点www目录下写入一个php文件,访问该网站下的php文件成功:

文件上传一句话木马getshell_第1张图片
文件上传一句话木马getshell_第2张图片

命令执行函数:system()、Exec()、 Shell_exec()
passthru(): 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上
   1.如url中输入:XXXX/1.php?a=net user mqu sss /add
    //net user mqu sss /add 添加新用户到系统:mqu为用户名 sss为密码
   2. 如url中输入:XXXX/1.php?a=dir
   3. 如url中输入:XXXX/1.php?a=ipconfig,回显ip

2.同1一样写一个含有一句话木马的php文件
在这里插入图片描述
文件上传一句话木马getshell_第3张图片

eval函数的使用:
eval函数:  eval("phpcode");
eg:

结果:go665

eg1:
文件上传一句话木马getshell_第4张图片在这里插入图片描述
3.已知待攻击ip即一句话木马url路径,可以通过蚁剑连接,从而获取到该主机的后台任务管理部分,并可以对其文件进行增删改查(前提是二台主机连接同一个网络),特别注意在dvwa上传时会出现…/…/xxx/xxx/2.php上传成功提示,此时蚁剑要连接的url路径则是要在原路径中返回两个上层目录后的url
文件上传一句话木马getshell_第5张图片

一句话木马与大马区别:

1.一句话木马需要借助客户端等,而大马可以直接通过浏览器访问

2.一句话木马代码量小,大马代码量大

3.一句话木马隐蔽性强可以通过隐藏特征而绕过,而大马代码量更大往往需要编码加密的形式绕过

文件上传漏洞测试思路:

1.客户端校验: javascript校验->(绕过)修改客户端代码/上传过程修改数据包

php文件后缀名改为jpg,抓包后将后缀名又改为php,经查jpg的mime类型为image/jpg,所以将Content-Type类型改为image/jpeg

2.服务端校验:

a.MIME类型->(绕过)上传过程修改MIME类型

法1.上传一个含有一句话木马的php文件,经查jpg的mime类型为image/jpg,所以将Content-Type类型改为image/jpeg,重放后上传成功。
法2.php文件后缀名改为jpg,抓包后得的Content-Type类型就为image/jpeg,此时将后缀名为jpg改为php,重放后上传成功。

b.扩展名校验->(绕过)特殊扩展名/截断上传/解析漏洞等

解析漏洞(中间件存在漏洞):
1.文件路径为/1.asp/ ,文件名为1.jpg,则访问/1.asp/1.jpg时1.jpg会被当作asp文件解析。
2.分号后的内容解析式会被忽略:如1.php;1.jpg文件可以被当作php文件解析。
3.当有在白名单中但中间件无法解析的后缀名时,中间件会从后向前解析,如   1.php.7z ,中间件无法解析7z,则该文件会被当作php文件解析。
4./XX.JPG/任意文件名.php 文件会被当作php文件解析。

c.文件内容->(绕过)上传图片木马/代码混淆

上传图片木马(edjpgcom可以生成图片马):
1.上传图片马(后缀名为jpg)后不能解析,则将后缀名进行更改(双写php):如下图1
2.(结合截断注入):上传图片马后将后缀名改为php,此时mime类型为image/jpg,后端又不允许上传php文件,所以把后缀名改为php%00.jpg,然后ctrl+shift+u编码后(%00写入了hex编码)再发包即可上传成功。如下图2

在这里插入图片描述
在这里插入图片描述d.黑名单检测->(绕过)php大小写绕过/后缀名为黑名单以外的脚本类型/截断绕过

截断绕过(00截断、冒号截断):后缀名以小数点或空格结尾,可以绕过前端且windows保存时会自动去除这些符号
eg如图片马中2例

入侵方式: sql注入+文件上传: phpmyadmin; sqlmap 跑–os-shell

看ip有无高危漏洞:nessus扫描即可

你可能感兴趣的:(小白成长记,php,安全,网络)