Web 安全 PHP 代码审查之常规漏洞_rips工具漏洞利用生成的php代码如何使用(3)
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
![](https://img-
blog.csdnimg.cn/img_convert/6679c89ccd849f9504c48bb02882ef8d.png)
![](https://img-
blog.csdnimg.cn/img_convert/07ce1a919614bde78921fb2f8ddf0c2f.png)
![](https://img-
blog.csdnimg.cn/img_convert/44238619c3ba2d672b5b8dc4a529b01d.png)
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图 。可以说是最科学最系统的学习路线 ,大家跟着这个大的方向学习准没问题。
![image](https://img-
blog.csdnimg.cn/img_convert/acb3c4714e29498573a58a3c79c775da.gif#pic_center)
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
![image-20231025112050764](https://img-
blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
RIPS 能够发现 SQL 注入、XSS 跨站、文件包含、代码执行、文件读取等多种漏洞,支持多种样式的代码高亮。比较有意思的是,它还支持自动生成漏洞利用。
安装方法
下载地址:https://jaist.dl.sourceforge.net/project/rips-scanner/rips-0.55.zip.
解压到任意一个PHP的运行目录
在浏览器输入对应网址,可以通过下图看到有一个path 在里面填写你要分析的项目文件路径,点击 scan.
界面截图
seay 源代码审计系统
功能介绍
这些是seay 第一个版本的部分功能,现在最新版本是2.1。
- 傻瓜化的自动审计 。
- 支持php代码调试 。
- 函数/变量定位 。
- 生成审计报告。
- 自定义审计规则 。
- mysql数据库管理 。
- 黑盒敏感信息泄露一键审计 。
- 支持正则匹配调试 。
- 编辑保存文件 。
- POST数据包提交 。
安装方法
安装环境需要 .NET2.0以上版本环境才能运行,下载安装包之后点击下一步就安装好了,非常的简便。
安装包下载地址:http://enkj.jb51.net:81/201408/tools/Seayydmsjxt(jb51.net).rar
操作界面的截图
二、代码审计实战
通过刚才安装的两个审计工具运行后我们可以发现,会分析出很多隐藏的漏洞,那下面我们看看其中的SQL注入、XSS、CSRF产生的原因,通过原因来分析如何去审计代码。
SQL注入
SQL注入漏洞一直是web系统漏洞中占比非常大的一种漏洞,下面我们来看看SQL注入的几种方式。
SQL 注入漏洞分类
从利用方式角度可以分为两种类型:常规注入、宽字节注入。
常规注入方式,通常没有任何过滤,直接把参数存放到了SQL语句当中,如下图。
非常容易发现,现在开发者一般都会做一些过滤,比如使用addslashes(),但是过滤有时候也不一定好使。
编码注入方式
宽字节注入,这个是怎么回事呢?
在实际环境中程序员一般不会写上面类似的代码,一般都会用addslashes()等过滤函数对从web传递过来的参数进行过滤。不过有句话叫做,道高一尺魔高一丈,我们看看白帽子是怎么突破的。用PHP连接MySQL的时候,当设置
character_set_client=gbk时候会导致一个编码漏洞。我们知道addslashes() 会把参数 1’ 转换成 1\’,而我们提交参数
1%df’ 时候会转成 1縗’,那我们输入 1%df’ or 1=1%23时候,会被转换成 1縗’ or 1=1#’。
简单来说%df’会被过滤函数转义为%df\’ ,%df\’ = %df%5c%27
在使用gbk编码的时候会认为%df%5c是一个宽字节%df%5c%27=縗’,这样就会产生注入。
那如何防御这个宽字节呢?我希望大家开发网站尽量使用UTF8编码格式,如果转换麻烦,最安全的方法就是使用PDO预处理。挖掘这种漏洞主要是检查是否使用了gbk,搜索guanjianc character_set_client=gbk 和mysql_set_chatset('gbk')
。
二次urldecode注入,这中方式也是因为使用了urldecode不当所引起的漏洞。
我们刚才知道了 addslashes()函数可以防止注入,他会在(‘)、(“)、()前面加上反斜杠来转义。
那我们假设我们开启了GPC,我们提交了一个参数,/test.php?uid=1%2527,因为参数中没有单引号,所以第一次解码会变成uid=1%27,%25解码出来就是%,
这时候程序里如果再去使用urldecode来解码,就会把%27解码成单引号(‘),最终的结果就是uid=1’.
我们现在知道了原有是因为urldecode引起的,我们可以通过编辑器的搜索urldecode和rawurldecode找到二次url漏洞。
从漏洞类型区分可以分为三种类型:
- 可显
攻击者可以直接在当前界面内容中获取想要获得的内容。
2. 报错
数据库查询返回结果并没有在页面中显示,但是应用程序将数据库报错信息打印到了页面中。
所以攻击者可以构造数据库报错语句,从报错信息中获取想要获得的内容,所以我建议在数据库类中设置不抛出错误信息。
3. 盲注
数据库查询结果无法从直观页面中获取攻击者通过使用数据库逻辑或使数据库库执行延时等方法获取想要获得的内容。
SQL 注入漏洞挖掘方法
针对上面提到的利用漏洞方法,总结了以下的挖掘方法:
- 参数接收位置,检查是否有没过滤直接使用 _POST、$_COOKIE 参数的。
- SQL语句检查,搜索关键词
select update insert
等SQL语句关键处,检查SQL语句的参数是否可以被控制。 - 宽字节注入,如果网站使用的 GBK 编码情况下,搜索
guanjianc character_set_client=gbk
和mysql_set_chatset('gbk')
就行。 - 二次 urldecode 注入,少部分情况,gpc 可以通过编辑器的搜索 urldecode 和 rawurldecode 找到二次url漏洞。
SQL 注入漏洞防范方法
虽然SQL注入漏洞非常多,但是防范起来却挺简单的,下面介绍几个过滤函数和类:
- gpc/rutime 魔术引号
- 过滤函数和类
- addslashes
- mysql_real_escape_string
- intval
- PDO 预处理
XSS跨站
前言
XSS 又叫 CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往 Web 页面里插入恶意 html
代码,当用户浏览该页之时,嵌入其中 Web 里面的 html 代码会被执行,从而达到恶意的特殊目的。
XSS 属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。在 WEB2.0
时代,强调的是互动,使得用户输入信息的机会大增,在这个情况下,我们作为开发者,在开发的时候,要提高警惕。
xss 漏洞分类
- 反射型,危害小,一般
反射型XSS原理:就是通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特定的代码参数会被HTML解析,执行,如此就可以获取用户的COOIKE,进而盗号登陆。比如hack甲构造好修改密码的URL并把密码修改成123,但是修改密码只有在登陆方乙才能修改,乙在登陆的情况下点击甲构造好的URL将直接在不知情的情况下修改密码。
特点是:非持久化,必须用户点击带有特定参数的链接才能引起。
2. 存储型,危害大,影响时间长
存储型XSS原理,假设你打开了一篇正常的文章页面,下面有评论功能。这个时候你去评论了一下,在文本框中输入了一些JavaScript代码,提交之后,你刷新这个页面后发现刚刚提交的代码又被原封不动的返回来并且执行了。
这个时候你会想,我要写一段 JavaScript 代码获取 cookie
信息,然后通过ajax发送到自己的服务器去。构造好代码后你把链接发给其他的朋友,或者网站的管理员,他们打开 JavaScript
代码就执行了,你服务器就接收到了sessionid,你就可以拿到他的用户权限了。
3.dom型,特殊的一种
dom型 XSS 是因为 JavaScript 执行了dom 操作,所造成的 XSS 漏洞,具体如下图。可以看到虽然经过 html
转义了,但是这块代码在返回到 html 中,又被 JavaScript 作为 dom 元素操作。那当我输入?name=<img src=1 onerror=alert(1)>
的时候依然会存在 XSS 漏洞。
xss 漏洞挖掘方法
根据上面的一些特点,可以总结出几个分析出几个挖掘方法:
- 数据接收位置,检查 _POST、$_COOKIE是否经过转义。
- 常见的反射型XSS搜索这种类似位置发现次数较多。
- 而存储型在文章,评论出现比较多。
XSS 漏洞防范方法
- 转义html实体,有两种方式:在入口和出口,我建议是在入口处转义,防止出口位置取出来的时候忘记转义,如果已经在入口转义了,出口位置就不用再次转义。
- 在富文本编辑器中,经常会用到一些元素的属性,比如上图的onerror,那我们还需对元素的属性建立黑白名单。
- httpOnly 即使存在xss漏洞,可以把危害大大降低。
CSRF漏洞
CSRF 漏洞介绍
CSRF(Cross-site request
forgery)跨站请求伪造,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户。
而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF
攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
csrf 主要用来做越权操作,而且 csrf 一直没有被关注起来,所以很多程序现在也没有相关的防范措施。
CSRF 案例
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
![](https://img-
blog.csdnimg.cn/img_convert/311903982dea1d8a5d2c98fc271b5b41.jpeg)
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
![](https://img-
blog.csdnimg.cn/img_convert/1ddfaf7dc5879b1120e31fafa1ad4dc7.jpeg)
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
![](https://img-
blog.csdnimg.cn/img_convert/bcd1787ce996787388468bb227d8f959.jpeg)
项目实战
最后就是项目实战,这里带来的是SRC资料 &HW资料,毕竟实战是检验真理的唯一标准嘛~
![](https://img-
blog.csdnimg.cn/img_convert/35fc46df24091ce3c9a5032a9919b755.jpeg)
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!