Heim  >  Artikel  >  Backend-Entwicklung  >  你是否在为如何学习进行PHP代码审计烦恼?

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

WBOY
WBOYOriginal
2016-07-23 08:54:521617Durchsuche
本帖最后由 瞅啥瞅 于 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语句插进了数据库。
通过代码也可以看到是需要审核的,所以就可以断定是在后台可以审核这个。
我现在前台插入了<script>alert(1)</script>payload进行留言提交:


提交成功了:

转战后台:

到留言管理那边:

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


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

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







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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn