当前位置:Gxlcms > PHP教程 > 你是否在为如何学习进行PHP代码审计烦恼?

你是否在为如何学习进行PHP代码审计烦恼?

时间:2021-07-01 10:21:17 帮助过:20人阅读

本帖最后由 瞅啥瞅 于 2016-7-13 10:34 编辑

这个帖子是我在其他论坛看到的,感觉非常不错,所以分享过来,跟大家一起讨论学习。

作者:jing0102
原文:
你是否在为如何学习\进行PHP代码审计烦恼?

0x01 代码审计介绍

代码审计是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析技术。
我们的代码审计对象包括并不限于对WindowsLinux系统环境下的以下语言进行审核:java、C、C#、ASP、PHP、JSP、.NET。
当然当今比较流行的是php代码审计,因为PHP也是当今WEB安全开发的主流语言之一。

0x02 如何去学习PHP代码审计
既然咱们知道了代码审计的意思,那么就要知道要在PHP源代码中寻找漏洞、缺陷、错误,就必须要学习对应源代码的语言(PHP)。
①了解PHP大概的语法
②初步能读懂PHP代码
③了解相关的PHP危险函数(如:system() exec())
④拥有一个可以定位、回溯、寻找的工具(推荐:TommSearch、SeayPHP源代码审计工具)
⑤多看一些别人分析的过程
⑥进行实战挖掘

0x03 如何去进行PHP代码审计①先通过本地进行一个本地的渗透测试,一旦发现不对,就可以使用TommSearch来定位相关的文件(如果是框架的话定位就需要很繁琐(框架定位,可以参考文章:http://darkm01lym0on.blog.163.com/blog/static/2567990922016019105947508/),但是如果不是框架,直接看URL的文件就可以直接定位)
②跟踪相关代码
③做好相应的测试笔记
④审计结束
下面我就自己来站长之家下个源代码做个测试吧。下载地址:http://down.chinaz.com/soft/33915.htm
e.g 刚刚下载了个PHP留言本系统就随便看了看

可以看到是一个fk1.php的文件,查看这个文件的源代码:

  • $username=$_POST["username"];//变量username被赋post传递过来的username参数的值 以下多个同样的意思
  • $qq=$_POST["qq"];
  • $email=$_POST["email"];
  • $homepage=$_POST["homepage"];
  • $face=$_POST["face"];
  • $title=$_POST["title"];
  • $content=$_POST["content"];
  • $time=date('Y-m-d H:i:s');
  • $ip=$_SERVER['REMOTE_ADDR'];//记录你的IP
  • $sql="insert into leavewords (username,qq,email,homepage,face,leave_title,leave_contents,leave_time,ip) values ('$username',$qq,'$email','$homepage','$face','$title','$content','$time','$ip')";//使用insert插入这些留言的值
  • mysql_query($sql);//执行语句

[color=rgb(85, 85, 85) !important]

可以看到提交的留言内容居然没有进行处理就执行了mysql语句插进了数据库。
通过代码也可以看到是需要审核的,所以就可以断定是在后台可以审核这个。
我现在前台插入了payload进行留言提交:


提交成功了:

转战后台:

到留言管理那边:

瞬间弹出了一个弹框,代码被顺利执行。
通过这个XSS存储漏洞,我们可以进行XSS打后台管理员的COOKIE。


-----------------------e.g end-----------------------
以上是简单的一个审计思路,大牛勿喷,小白可以多学习!

0x04 代码审计的道路总结
说实话我在代码审计这条路上走了一年之久,我也试过放弃,可我还是坚持下来了,虽然说技术不精,但是吧,我学习的经验希望可以帮助大家。
1.少吹牛逼多看实例
2.多关注PHP代码函数
3.最重要的也是最难的:坚持
希望大家在以后的日子互相促进!怀挺!







--------本文转载自:i春秋论坛

人气教程排行