前言

殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。

擅长:对于技术、工具、漏洞原理、黑产打击的研究。

C站缘:C站的前辈,引领我度过了一个又一个技术的瓶颈期、迷茫期。


导读:

面向读者:对于网络安全方面的学者。

本文知识点(读者自测):

(1)Thinkphp基本结构(√)

(2)基本函数(√)

(3)危险函数(√)

(4)已有漏洞(√)

(5)漏洞检测工具(√)

 让读者如虎添翼

审计博文 类型 状态
【代码审计-PHP】phpStudy(新版) + PhpStorm + XDebug动态调试 PHP 已发布
【代码审计-PHP】审计方法、敏感函数、功能点 PHP 已发布
【代码审计-PHP】基于Thinkphp框架开发的 PHP 已发布
【代码审计-.NET】基于.NET框架开发的基本特征 .NET 已发布
【代码审计-.NET】基于.NET框架开发的代码审计 .NET 已发布
【代码审计-JAVA】基于javaweb框架开发的 JAVA 已发布
【代码审计-JAVA】javaweb代码审计思路 JAVA 已发布
2023将更新更多,敬请期待 —— ——

目录

 一、Thinkphp基本结构

1、框架目录

2、判断框架、版本

3、入口文件

4、资源文件

5、调试开关

6、URL路由

二、基本函数

1、请求

2、交互:

3、响应:

三、危险函数

四、已有漏洞

五、漏洞检测工具

六、工具


 一、Thinkphp基本结构

1、框架目录


  1. www WEB部署目录(或者子目录)
  2. ├─application 应用目录
  3. │ ├─common 公共模块目录(可以更改)
  4. │ ├─module_name 模块目录
  5. │ │ ├─common.php 模块函数文件
  6. │ │ ├─controller 控制器目录
  7. │ │ ├─model 模型目录
  8. │ │ ├─view 视图目录
  9. │ │ ├─config 配置目录
  10. │ │ └─ … 更多类库目录
  11. │ │
  12. │ ├─command.php 命令行定义文件
  13. │ ├─common.php 公共函数文件
  14. │ └─tags.php 应用行为扩展定义文件
  15. ├─config 应用配置目录
  16. │ ├─module_name 模块配置目录
  17. │ │ ├─database.php 数据库配置
  18. │ │ ├─cache 缓存配置
  19. │ │ └─ …
  20. │ │
  21. │ ├─app.php 应用配置
  22. │ ├─cache.php 缓存配置
  23. │ ├─cookie.php Cookie配置
  24. │ ├─database.php 数据库配置
  25. │ ├─log.php 日志配置
  26. │ ├─session.php Session配置
  27. │ ├─template.php 模板引擎配置
  28. │ └─trace.php Trace配置
  29. ├─route 路由定义目录
  30. │ ├─route.php 路由定义
  31. │ └─… 更多
  32. ├─public WEB目录(对外访问目录)
  33. │ ├─index.php 入口文件
  34. │ ├─router.php 快速测试文件
  35. │ └─.htaccess 用于apache的重写
  36. ├─thinkphp 框架系统目录
  37. │ ├─lang 语言文件目录
  38. │ ├─library 框架类库目录
  39. │ │ ├─think Think类库包目录
  40. │ │ └─traits 系统Trait目录
  41. │ │
  42. │ ├─tpl 系统模板目录
  43. │ ├─base.php 基础定义文件
  44. │ ├─convention.php 框架惯例配置文件
  45. │ ├─helper.php 助手函数文件
  46. │ └─logo.png 框架LOGO文件
  47. ├─extend 扩展类库目录
  48. ├─runtime 应用的运行时目录(可写,可定制)
  49. ├─vendor 第三方类库目录(Composer依赖库)
  50. ├─build.php 自动生成定义文件(参考)
  51. ├─composer.json composer 定义文件
  52. ├─LICENSE.txt 授权说明文件
  53. ├─README.md README 文件
  54. ├─think 命令行入口文件


2、判断框架、版本

在源码中搜Thinkphp,如果有就是Thinkphp框架

搜THINK_VERSION可以看到相应的版本信息


3、入口文件

关键词APP_PATH

定义应用目录、框架入口文件

按住Ctrl再点击这个目录,就会在左边目录栏跳转到这个目录位置


4、资源文件

均放在public的目录下,找不到的话会爆路径错误情况


  1. public
  2. ├─index.php 应用入口文件
  3. ├─static 静态资源目录
  4. │ ├─css 样式目录
  5. │ ├─js 脚本目录
  6. │ └─img 图像目录
  7. │─router.php 快速测试文件
  8. └─.htaccess 用于apache的重写


5、调试开关

审计的时候,需要将false改为true

如果直接搜debug的话,可能会搜到convention.php上的debug

默认情况下:
// 应用调试模式
‘app_debug’ => false,
// 应用Trace
‘app_trace’ => false,


6、URL路由


①方法/变量值进行传参
http://domainName/index.php/模块/控制器/操作/方法/变量值
eg:访问www.xxx.com/index.php/index/index/index
为application目录下的index模块下的从contraller目录下的index文件下的index函数
②变量传参
http://tp5.com/index.php?s=/index/Index/index


二、基本函数

1、请求

Request对象进行调用

获取请求变量

利用:寻找用户可控的变量(且传入给有一定功能的函数)


1、param()

获取所有请求变量

param(‘指定的函数对象’,’未获取到时的默认值’,’对于获取到的值的处理函数’)

$request->param():用于获取所有的变量(优先级:路由变量 > 当前请求变量($_POST) > $_GET变量


2、get()

获取$_GET变量

$request->get(‘指定的函数对象’)
echo input(‘get.函数对象’)


3、
post()获取$_POST

file()获取$_FILE

ip()获取请求IP

method()获取请求方法

pathInfo()获取控制器和方法名的路径

rootInfo()获取路由

2、交互:

配置:

1、代码过滤

2、过滤器过滤

3、模块过滤

4、预编译,使用占位符

……


利用:

1、判断代码绕过条件

2、过滤器漏洞

3、寻找未使用过滤模块的地方

4、不安全的过滤

……

3、响应:

1、配置自动输出

配置:在config.ph中设置default_return_type更改默认返回类型

利用:寻找模板存在的漏洞、寻找未引用模板的目录


2、函数输出

配置:

return 格式类型json($data,201,[‘set_cookie’=>’xxxx’])

利用:寻找用户可控值


3、重定向

eg:

if($userid>=0){$this->success(“提示语”,”user跳转页面”)}
else{ $this->error(“错误提示语”)}

利用:看是否能利用重定向漏洞,跳转到其他不安全地方



三、危险函数

类型 危险函数
SQL select、insert、update、POST、$REQUEST、mysql_query、mysqli
文件上传 $_FILES、move_uploaded_file、!file_exists、type=”file”
文件读写 file_get_contents()、file_put_contents()、move_uploaded_file()、highlight_file()、fopen()、readfile()、fread()、fgetss()、fgets()、parse_ini_file()、show_source()、file()、rename()
文件删除 unlink & delete()、rmdir()
文件包含 include、include_once、require、require_once
命令执行 system()、exec()、shell_exec()、passthru()、pcntl_exec()、popen()、proc_open()
代码执行 eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()、array_map()
xss print、print_r、echo、printf、sprintf、die、var_dump、var_export
变量覆盖关 $$、parse_str()、extract()、importrequestvariables()
反序列化 serialize()、unserialize()、__construct__
…… ……


四、已有漏洞

针对未公开的漏洞

根据描述寻找到未公开的漏洞点



五、漏洞检测工具

针对已公开的漏洞

大佬集成了一个工具箱,可以关注公众号以后免费下载



六、工具

Seay

RIPS

CheckMarx

Fortify

VCG

Kunlun-M



网络安全三年之约

First year

掌握各种原理、不断打新的靶场

目标:edusrc、cnvd

主页 | 教育漏洞报告平台 (sjtu.edu.cn)https://src.sjtu.edu.cn/https://www.cnvd.org.cnhttps://www.cnvd.org.cn/


second year

不断学习、提升技术运用技巧,研究各种新平台

开始建立自己的渗透体系

目标:众测平台、企业src应急响应中心

众测平台 URL
漏洞盒子 漏洞盒子 | 互联网安全测试众测平台
火线安全平台 火线安全平台
漏洞银行 BUGBANK 官方网站 | 领先的网络安全漏洞发现品牌 | 开放安全的提出者与倡导者 | 创新的漏洞发现平台
360漏洞众包响应平台 360漏洞云漏洞众包响应平台
补天平台(奇安信) 补天 – 企业和白帽子共赢的漏洞响应平台,帮助企业建立SRC
春秋云测 首页
雷神众测(可信众测,安恒) 雷神众测 – BountyTeam
云众可信(启明星辰) 云众可信 – 互联网安全服务引领者
ALLSEC ALLSEC
360众测 360众测平台
看雪众测(物联网 https://ce.kanxue.com/
CNVD众测平台 网络安全众测平台
工控互联网安全测试平台 CNCERT工业互联网安全测试平台
慢雾(区块链 Submit Bug Bounty – SlowMist Zone – Blockchain Ecosystem Security Zone
平安汇聚 http://isrc.pingan.com/homePage/index
互联网大厂 URL
阿里 https://asrc.alibaba.com/#/
腾讯 https://security.tencent.com/
百度 https://bsrc.baidu.com/v2/#/home
美团 https://security.meituan.com/#/home
360 https://security.360.cn/
网易 https://aq.163.com/
字节跳动 https://security.bytedance.com/
京东 https://security.jd.com/#/
新浪 http://sec.sina.com.cn/
微博 https://wsrc.weibo.com/
搜狗 http://sec.sogou.com/
金山办公 https://security.wps.cn/
有赞 https://src.youzan.com/

Third Year

学习最新的知识,建全自己的渗透体系

目标:参与护网(每一个男孩子心中的梦想)

时间:一般5月面试,6/7月开始(持续2-3周)

分类:国家级护网、省级护网、市级护网、重大节日护网(如:建党、冬奥等)