标签 - python

? python ? ? webshell ? ? 大马 ?    2020-01-10 17:24:29    840    0    0

0x01 运行环境 —— Apache 服务器 CGI 配置

要运行此 Python 版本的 Webshell,需要应用服务器以 CGI 方式支持 python 文件。

先配置 Apache 的配置文件 httpd.conf 使其支持 CGI,因为我使用的是 phpstudy,所以如下设置:

  1. DocumentRoot "D:\phpStudy\PHPTutorial\WWW"
  2. <Directory />
  3. Options +Indexes +FollowSymLinks +ExecCGI
  4. AllowOverride All
  5. Order allow,deny
  6. Allow from all
  7. Require all granted
  8. </Directory>

让 Apache 识别 .py 文件为 CGI 程序:

  1. AddHandler cgi-script .cgi .pl .py

只允许在特别目录下执行cgi程序:

  1. ScriptAlias /cgi-bin/ "D:/phpStudy/PHPTutorial/Apache/cgi-bin/"

以上就完成了 Apache 对于 CGI 的支持的配置。测试一下:

使用 Python 创建第一个 CGI 程序,文件名为 test.py,文件位于 D:\phpStudy\PHPTutorial\Apache\cgi-bin 目录中,内容如下:

  1. #!C:\Python27\python2.exe
  2. # -*- coding: UTF-8 -*-
  3. print "Content-type:text/html"
  4. print # 空行,告诉服务器结束头部
  5. print '<html>'
  6. print '<head>'
  7. print '<meta charset="utf-8">'
  8. print '<title>Hello World - CGI 测试!</title>'
  9. print '</head>'
  10. print '<body>'
  11. print '<h2>Hello World! 输出这句话说明测试成功</h2>'
  12. print '</b
? python ? ? 代码审计 ?    2020-01-10 17:22:56    1694    0    0

0x01 前言

时间的车轮滚滚而过,我终于学到代码审计了。


0x02 Python 危险内置函数

Python3 里面,主要有:

  • eval()
  • exec()
  • compile()

title

注:
python3 删去了 execfile() 函数,代替方法如下:

  1. with open('test1.py','r') as f:
  2. exec(f.read())

Python2 里面,主要有:

  • eval()
  • execfile()
  • compile()

    title

注:
需要说明的是在 Python2 中 exec 不是函数,而是一个内置语句(statement),但是 Python 2 中有一个 execfile() 函数。可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的 exec() 函数中去了。


0x03 eval() 函数(执行单个表达式)

功能: 将字符串当成有效的表达式来求值并返回计算结果。

语法:

  1. eval(expression, globals= None, locals= None)

官方文档中的解释:
将字符串 str 当成有效的表达式来求值并返回计算结果。
globals(全局)和 locals(局部)参数是可选的,如果提供了globals参数,那么它必须是 dictionary 类型;
如果提供了 locals 参数,那么它可以是任意的 map 对象。

eval() 函数三个参数的用法可以参考此两篇博客,写的很清楚了:

总结来说,eval() 函数的第二、三个参数,也就是 globalslocals 是可以省略的,如果传入了,它们的作用是定义作用域的。globals 代表作用域为全局、locals 代表作用域为局部。如有冲突,以 locals 的作用域为准 。

第二三个参数分别指定能够在 eval 中使用的函数等,如果不指定,默认为 globals(